mirror of https://github.com/apache/cloudstack.git
bug 3316: Added initial UI support to live migrate VMs.
This commit is contained in:
parent
a6861d0ac1
commit
85e892bded
|
|
@ -1,5 +1,10 @@
|
|||
#New - Add all new parameters here.
|
||||
label.action.migrate.instance=Migrate Instance
|
||||
label.migrate.instance.to=Migrate instance to
|
||||
label.full=Full
|
||||
label.available=Available
|
||||
|
||||
message.migrate.instance.confirm=Please confirm the host you wish to migrate the virtual instance to.
|
||||
|
||||
message.download.volume=Please click <a href="#">00000</a> to download volume
|
||||
message.download.ISO=Please click <a href="#">00000</a> to download ISO
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ dictionary = {
|
|||
'label.action.reset.password.processing': '<fmt:message key="label.action.reset.password.processing"/>',
|
||||
'label.action.change.service': '<fmt:message key="label.action.change.service"/>',
|
||||
'label.action.change.service.processing': '<fmt:message key="label.action.change.service.processing"/>',
|
||||
'label.action.migrate.instance': '<fmt:message key="label.action.migrate.instance"/>',
|
||||
'label.action.detach.disk': '<fmt:message key="label.action.detach.disk"/>',
|
||||
'label.action.detach.disk.processing': '<fmt:message key="label.action.detach.disk.processing"/>',
|
||||
'label.action.create.template': '<fmt:message key="label.action.create.template"/>',
|
||||
|
|
@ -42,6 +43,8 @@ dictionary = {
|
|||
'message.action.take.snapshot': '<fmt:message key="message.action.take.snapshot"/>',
|
||||
'label.data.disk.offering': '<fmt:message key="label.data.disk.offering"/>',
|
||||
'label.root.disk.offering': '<fmt:message key="label.root.disk.offering"/>',
|
||||
'label.full': '<fmt:message key="label.full"/>',
|
||||
'label.available': '<fmt:message key="label.available"/>',
|
||||
'message.launch.vm.on.private.network': '<fmt:message key="message.launch.vm.on.private.network"/>'
|
||||
};
|
||||
</script>
|
||||
|
|
@ -1223,6 +1226,27 @@ dictionary = {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Migrate VM Dialog -->
|
||||
<div id="dialog_migrate_instance" title='<fmt:message key="label.action.migrate.vm" />' style="display: none">
|
||||
<p>
|
||||
<fmt:message key="message.migrate.instance.confirm" />
|
||||
</p>
|
||||
<div class="dialog_formcontent">
|
||||
<form action="#" method="post" id="form_acquire">
|
||||
<ol>
|
||||
<li>
|
||||
<label>
|
||||
<fmt:message key="label.migrate.instance.to" />:</label>
|
||||
<select class="select" id="migrate_instance_hosts">
|
||||
</select>
|
||||
<div id="migrate_vm_hosts_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Create template of disk volume dialog (begin) -->
|
||||
<div id="dialog_create_template" title='<fmt:message key="label.action.create.template" />' style="display: none">
|
||||
<p>
|
||||
|
|
|
|||
|
|
@ -131,7 +131,8 @@ function afterLoadInstanceJSP() {
|
|||
initDialog("dialog_detach_iso_from_vm");
|
||||
initDialog("dialog_attach_iso");
|
||||
initDialog("dialog_change_service_offering", 600);
|
||||
initDialog("dialog_create_template", 400);
|
||||
initDialog("dialog_create_template", 400);
|
||||
initDialog("dialog_migrate_instance", 600);
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=listOsTypes"),
|
||||
|
|
@ -1367,7 +1368,16 @@ var vmActionMap = {
|
|||
var jsonObj = json.changeserviceforvirtualmachineresponse.virtualmachine;
|
||||
vmToMidmenu(jsonObj, $midmenuItem1);
|
||||
}
|
||||
}
|
||||
},
|
||||
"label.action.migrate.instance": {
|
||||
isAsyncJob: false,
|
||||
inProcessText: "label.action.migrate.instance",
|
||||
dialogBeforeActionFn : doMigrateInstance,
|
||||
afterActionSeccessFn: function(json, $midmenuItem1, id) {
|
||||
var jsonObj = json.queryasyncjobresultresponse.jobresult.virtualmachine;
|
||||
vmToMidmenu(jsonObj, $midmenuItem1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function doStartVM($actionLink, $detailsTab, $midmenuItem1) {
|
||||
|
|
@ -1667,6 +1677,54 @@ function doChangeService($actionLink, $detailsTab, $midmenuItem1) {
|
|||
}).dialog("open");
|
||||
}
|
||||
|
||||
function doMigrateInstance($actionLink, $detailsTab, $midmenuItem1) {
|
||||
var jsonObj = $midmenuItem1.data("jsonObj");
|
||||
var id = jsonObj.id;
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=listHosts&VirtualMachineId="+id),
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function(json) {
|
||||
var hosts = json.listhostsresponse.host;
|
||||
var hostSelect = $("#dialog_migrate_instance #migrate_instance_hosts").empty();
|
||||
|
||||
if (hosts != null && hosts.length > 0) {
|
||||
for (var i = 0; i < hosts.length; i++) {
|
||||
var option = $("<option value='" + hosts[i].id + "'>" + fromdb(hosts[i].name) + ": " +((hosts[i].hasEnoughCapacity) ? dictionary["label.available"] : dictionary["label.full"]) + "</option>").data("name", fromdb(hosts[i].name));
|
||||
hostSelect.append(option);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$("#dialog_migrate_instance")
|
||||
.dialog('option', 'buttons', {
|
||||
"OK": function() {
|
||||
var $thisDialog = $(this);
|
||||
|
||||
var isValid = true;
|
||||
isValid &= validateDropDownBox("Host", $thisDialog.find("#migrate_instance_hosts"), $thisDialog.find("#migrate_instance_errormsg"));
|
||||
if (!isValid)
|
||||
return;
|
||||
|
||||
$thisDialog.dialog("close");
|
||||
var hostId = $thisDialog.find("#migrate_instance_hosts").val();
|
||||
/*
|
||||
if(jsonObj.state != "Stopped") {
|
||||
$midmenuItem1.find("#info_icon").addClass("error").show();
|
||||
$midmenuItem1.data("afterActionInfo", ($actionLink.data("label") + " action failed. Reason: virtual instance needs to be stopped before you can change its service."));
|
||||
}
|
||||
*/
|
||||
var apiCommand = "command=migrateVirtualMachine&hostid="+hostId+"&virtualmachineid="+id;
|
||||
doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab);
|
||||
},
|
||||
"Cancel": function() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}).dialog("open");
|
||||
}
|
||||
|
||||
function vmToMidmenu(jsonObj, $midmenuItem1) {
|
||||
$midmenuItem1.data("jsonObj", jsonObj);
|
||||
$midmenuItem1.attr("id", getMidmenuId(jsonObj));
|
||||
|
|
@ -1830,7 +1888,8 @@ function vmBuildActionMenu(jsonObj, $thisTab, $midmenuItem1) {
|
|||
buildActionLinkForTab("label.action.edit.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
buildActionLinkForTab("label.action.stop.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
buildActionLinkForTab("label.action.reboot.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
buildActionLinkForTab("label.action.destroy.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
buildActionLinkForTab("label.action.destroy.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
buildActionLinkForTab("label.action.migrate.instance", vmActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
|
||||
if (jsonObj.isoid == null)
|
||||
buildActionLinkForTab("label.action.attach.iso", vmActionMap, $actionMenu, $midmenuItem1, $thisTab);
|
||||
|
|
|
|||
Loading…
Reference in New Issue