1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-25 02:50:08 +03:00

F #4287: Recursively cloning in Suntone (#4299)

This commit is contained in:
Sergio Betanzos 2020-03-06 11:55:41 +01:00 committed by GitHub
parent f3d8bac9c3
commit fdec8da57c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 5 deletions

View File

@ -100,8 +100,9 @@ define(function(require) {
OpenNebulaAction.simple_action(params, RESOURCE, "rename", action_obj, PATH);
},
"clone" : function(params) {
var name = params.data.extra_param ? params.data.extra_param : "";
var action_obj = {"name" : name};
var name = params.data.extra_param ? params.data.extra_param.name : "";
var mode = params.data.extra_param ? params.data.extra_param.mode : "none";
var action_obj = {"name" : name, "recursive": mode};
OpenNebulaAction.simple_action(params, RESOURCE, "clone", action_obj, PATH);
},
"getName": function(id){

View File

@ -62,22 +62,29 @@ define(function(require) {
}
function _setup(context) {
var that = this;
var id_cb_clone_vms = "clone-vms";
var id_cb_clone_images = "clone-images";
_drawCheckbox(context, id_cb_clone_vms, "Clone VM templates asssociated");
$("#" + DIALOG_ID + "Form", context).submit(function() {
var extra_info;
var name = $("input[name=\"name\"]", this).val();
var mode = _getModeClone(context, id_cb_clone_vms, id_cb_clone_images);
var sel_elems = Sunstone.getDataTable(ONEFLOW_TEMPLATES_TAB_ID).elements();
if (sel_elems.length > 1) {
for (var i = 0; i < sel_elems.length; i++) {
//If we are cloning several images we
//use the name as prefix
extra_info = name + OpenNebulaServiceTemplate.getName(sel_elems[i]);
extra_info = {
name: name + OpenNebulaServiceTemplate.getName(sel_elems[i]),
mode: mode
};
Sunstone.runAction("ServiceTemplate.clone", sel_elems[i], extra_info);
}
} else {
extra_info = name;
extra_info = { name: name, mode: mode };
Sunstone.runAction("ServiceTemplate.clone", sel_elems[0], extra_info);
}
@ -89,6 +96,12 @@ define(function(require) {
return false;
});
$("#" + id_cb_clone_vms, context).on('change', function() {
this.checked
? _drawCheckbox(context, id_cb_clone_images, "Clone images asssociated")
: _removeCheckbox(context, id_cb_clone_images);
});
return false;
}
@ -112,4 +125,26 @@ define(function(require) {
return false;
}
function _drawCheckbox(context, id, text) {
$("#clone-options", context).append(
'<div class="large-12 columns" id="' + id + '-wrapper">\
<input type="checkbox" class="'+ id +'" id="'+ id +'">\
<label for="'+ id +'">\
' + Locale.tr(text) + '\
</label>\
</div>');
}
function _removeCheckbox(context, id) {
$("#" + id, context).parent().remove();
}
function _getModeClone(context, id_cb_clone_vms, id_cb_clone_images) {
return $("#" + id_cb_clone_images, context).is(":checked")
? "all"
: $("#" + id_cb_clone_vms, context).is(":checked")
? "templates"
: "none";
}
});

View File

@ -35,6 +35,7 @@
<input required type="text" name="name"/>
</div>
</div>
<div class="row" id="clone-options"></div>
<div class="form_buttons row">
<button class="button radius right" id="template_clone_button" value="ServiceTemplate.clone">{{tr "Clone"}}</button>
</div>