mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-23 22:50:09 +03:00
Feature #1299: Added image clone support in Sunstone
(cherry picked from commit 9c9d76f5c2c393f685d4d20d10b4a68c3d253e67)
This commit is contained in:
parent
99529a168f
commit
6d18f1209e
@ -58,6 +58,7 @@ module OpenNebulaJSON
|
||||
when "chown" then self.chown(action_hash['params'])
|
||||
when "chmod" then self.chmod_octet(action_hash['params'])
|
||||
when "chtype" then self.chtype(action_hash['params'])
|
||||
when "clone" then self.clone(action_hash['params'])
|
||||
else
|
||||
error_msg = "#{action_hash['perform']} action not " <<
|
||||
" available for this resource"
|
||||
@ -84,5 +85,9 @@ module OpenNebulaJSON
|
||||
def chtype(params=Hash.new)
|
||||
super(params['type'])
|
||||
end
|
||||
|
||||
def clone(params=Hash.new)
|
||||
super(params['name'])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -816,6 +816,11 @@ var OpenNebula = {
|
||||
OpenNebula.Image.resource,
|
||||
"chtype",
|
||||
action_obj);
|
||||
},
|
||||
"clone" : function(params) {
|
||||
var name = params.data.extra_param ? params.data.extra_param : "";
|
||||
var action_obj = { "name" : name };
|
||||
OpenNebula.Action.simple_action(params,OpenNebula.Image.resource, "clone", action_obj);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -436,6 +436,16 @@ var image_actions = {
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
"Image.clone_dialog" : {
|
||||
type: "custom",
|
||||
call: popUpImageCloneDialog
|
||||
},
|
||||
"Image.clone" : {
|
||||
type: "single",
|
||||
call: OpenNebula.Image.clone,
|
||||
error: onError,
|
||||
notify: true
|
||||
},
|
||||
"Image.help" : {
|
||||
type: "custom",
|
||||
call: function() {
|
||||
@ -496,6 +506,10 @@ var image_buttons = {
|
||||
}
|
||||
}
|
||||
},
|
||||
"Image.clone_dialog" : {
|
||||
type: "action",
|
||||
text: tr("Clone"),
|
||||
},
|
||||
"Image.delete" : {
|
||||
type: "confirm",
|
||||
text: tr("Delete")
|
||||
@ -1136,6 +1150,78 @@ function setupImageActionCheckboxes(){
|
||||
|
||||
}
|
||||
|
||||
function setupImageCloneDialog(){
|
||||
//Append to DOM
|
||||
dialogs_context.append('<div id="image_clone_dialog" title="'+tr("Clone an image")+'"></div>');
|
||||
var dialog = $('#image_clone_dialog',dialogs_context);
|
||||
|
||||
//Put HTML in place
|
||||
|
||||
var html = '<form><fieldset>\
|
||||
<div class="clone_one">'+tr("Choose a new name for the image")+':</div>\
|
||||
<div class="clone_several">'+tr("Several image are selected, please choose prefix to name the new copies")+':</div>\
|
||||
<br />\
|
||||
<label class="clone_one">'+tr("Name")+':</label>\
|
||||
<label class="clone_several">'+tr("Prefix")+':</label>\
|
||||
<input type="text" name="name"></input>\
|
||||
<div class="form_buttons">\
|
||||
<button class="button" id="image_clone_button" value="Image.clone">\
|
||||
'+tr("Clone")+'\
|
||||
</button>\
|
||||
</div></fieldset></form>\
|
||||
';
|
||||
|
||||
dialog.html(html);
|
||||
|
||||
//Convert into jQuery
|
||||
dialog.dialog({
|
||||
autoOpen:false,
|
||||
width:375,
|
||||
modal:true,
|
||||
resizable:false,
|
||||
});
|
||||
|
||||
$('button',dialog).button();
|
||||
|
||||
$('form',dialog).submit(function(){
|
||||
var name = $('input', this).val();
|
||||
var sel_elems = imageElements();
|
||||
if (!name || !sel_elems.length)
|
||||
notifyError('A name or prefix is needed!');
|
||||
if (sel_elems.length > 1){
|
||||
for (var i=0; i< sel_elems.length; i++)
|
||||
Sunstone.runAction('Image.clone',
|
||||
sel_elems[i],
|
||||
name+getImageName(sel_elems[i]));
|
||||
} else {
|
||||
Sunstone.runAction('Image.clone',sel_elems[0],name)
|
||||
};
|
||||
dialog.dialog('close');
|
||||
setTimeout(function(){
|
||||
Sunstone.runAction('Image.refresh');
|
||||
}, 1500);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
function popUpImageCloneDialog(){
|
||||
var dialog = $('#image_clone_dialog');
|
||||
var sel_elems = imageElements();
|
||||
//show different text depending on how many elements are selected
|
||||
if (sel_elems.length > 1){
|
||||
$('.clone_one',dialog).hide();
|
||||
$('.clone_several',dialog).show();
|
||||
$('input',dialog).val('Copy of ');
|
||||
}
|
||||
else {
|
||||
$('.clone_one',dialog).show();
|
||||
$('.clone_several',dialog).hide();
|
||||
$('input',dialog).val('Copy of '+getImageName(sel_elems[0]));
|
||||
};
|
||||
|
||||
$(dialog).dialog('open');
|
||||
}
|
||||
|
||||
//The DOM is ready at this point
|
||||
$(document).ready(function(){
|
||||
|
||||
@ -1172,6 +1258,7 @@ $(document).ready(function(){
|
||||
setupImageTemplateUpdateDialog();
|
||||
setupTips($create_image_dialog);
|
||||
setupImageActionCheckboxes();
|
||||
setupImageCloneDialog();
|
||||
setImageAutorefresh();
|
||||
|
||||
initCheckAllBoxes(dataTable_images);
|
||||
|
Loading…
x
Reference in New Issue
Block a user