diff --git a/src/sunstone/public/app/tabs/vms-tab/panels/storage.js b/src/sunstone/public/app/tabs/vms-tab/panels/storage.js index 4ff4e5dfe9..0f10e9d603 100644 --- a/src/sunstone/public/app/tabs/vms-tab/panels/storage.js +++ b/src/sunstone/public/app/tabs/vms-tab/panels/storage.js @@ -129,7 +129,7 @@ define(function(require) { $.each(noParent, function(){ treeRoot.subTree.push( - _makeTree(indexedSnapshots[this], indexedSnapshots) + _makeTree(that, indexedSnapshots[this], indexedSnapshots) ); }); @@ -214,9 +214,7 @@ define(function(require) { } if (Config.isTabActionEnabled("vms-tab", "VM.disk_snapshot_create")) { - // TODO: set disk_snapshot_create in state-actions.js - //if (StateActions.enabledStateAction("VM.disk_snapshot_create", that.element.STATE, that.element.LCM_STATE) && !disk.CONTEXT) { - if (!disk.CONTEXT) { + if (StateActions.enabledStateAction("VM.disk_snapshot_create", that.element.STATE, that.element.LCM_STATE) && !disk.CONTEXT) { actions += ('\ ' + Locale.tr("Snapshot") + ''); @@ -419,7 +417,7 @@ define(function(require) { Tree.setup(context); } - function _makeTree(snapshot, indexedSnapshots){ + function _makeTree(that, snapshot, indexedSnapshots){ var SPACE = '    '; var subTree = []; @@ -427,7 +425,7 @@ define(function(require) { if (snapshot.CHILDREN){ $.each(snapshot.CHILDREN.split(","), function(){ subTree.push( - _makeTree(indexedSnapshots[this], indexedSnapshots) + _makeTree(that, indexedSnapshots[this], indexedSnapshots) ); }); } @@ -445,17 +443,23 @@ define(function(require) { html += Humanize.prettyTime(snapshot.DATE) + SPACE + (snapshot.TAG ? snapshot.TAG + SPACE : ''); - if (Config.isTabActionEnabled("vms-tab", "VM.disk_saveas")) { + if (Config.isTabActionEnabled("vms-tab", "VM.disk_saveas") && + StateActions.enabledStateAction("VM.disk_saveas", that.element.STATE, that.element.LCM_STATE)) { + html += '\ ' + Locale.tr("Save as") + '  '; } - if (Config.isTabActionEnabled("vms-tab", "VM.disk_snapshot_revert")) { + if (Config.isTabActionEnabled("vms-tab", "VM.disk_snapshot_revert") && + StateActions.enabledStateAction("VM.disk_snapshot_revert", that.element.STATE, that.element.LCM_STATE)) { + html += '' + Locale.tr("Revert") + '  '; } if(!active){ - if (Config.isTabActionEnabled("vms-tab", "VM.disk_snapshot_delete")) { + if (Config.isTabActionEnabled("vms-tab", "VM.disk_snapshot_delete") && + StateActions.enabledStateAction("VM.disk_snapshot_delete", that.element.STATE, that.element.LCM_STATE)) { + html += '' + Locale.tr("Delete") + ''; } } diff --git a/src/sunstone/public/app/tabs/vms-tab/utils/state-actions.js b/src/sunstone/public/app/tabs/vms-tab/utils/state-actions.js index cdb7158dbd..d41f1c0098 100644 --- a/src/sunstone/public/app/tabs/vms-tab/utils/state-actions.js +++ b/src/sunstone/public/app/tabs/vms-tab/utils/state-actions.js @@ -19,7 +19,7 @@ define(function(require) { ["VM.delete", "VM.delete_recreate", "VM.resume", "VM.deploy"]; STATE_ACTIONS[OpenNebulaVM.STATES.SUSPENDED] = - ["VM.delete", "VM.resume", "VM.disk_saveas", "VM.stop", "VM.shutdown_hard"]; + ["VM.delete", "VM.resume", "VM.disk_saveas", "VM.disk_snapshot_create", "VM.disk_snapshot_revert", "VM.disk_snapshot_delete", "VM.stop", "VM.shutdown_hard"]; STATE_ACTIONS[OpenNebulaVM.STATES.DONE] = []; @@ -28,7 +28,7 @@ define(function(require) { ["VM.delete", "VM.delete_recreate", "VM.resize"]; STATE_ACTIONS[OpenNebulaVM.STATES.POWEROFF] = - ["VM.delete", "VM.resume", "VM.resize", "VM.attachdisk", "VM.detachdisk", "VM.attachnic", "VM.detachnic", "VM.disk_saveas", "VM.migrate", "VM.undeploy", "VM.undeploy_hard", "VM.shutdown_hard"]; + ["VM.delete", "VM.resume", "VM.resize", "VM.attachdisk", "VM.detachdisk", "VM.attachnic", "VM.detachnic", "VM.disk_saveas", "VM.disk_snapshot_create", "VM.disk_snapshot_revert", "VM.disk_snapshot_delete", "VM.migrate", "VM.undeploy", "VM.undeploy_hard", "VM.shutdown_hard"]; STATE_ACTIONS[OpenNebulaVM.STATES.UNDEPLOYED] = ["VM.delete", "VM.delete_recreate", "VM.resume", "VM.resize", "VM.deploy"]; @@ -39,7 +39,7 @@ define(function(require) { LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.PROLOG ] = []; LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.BOOT ] = []; LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.RUNNING ] = - ["VM.shutdown", "VM.shutdown_hard", "VM.stop", "VM.suspend", "VM.reboot", "VM.reboot_hard", "VM.resched", "VM.unresched", "VM.poweroff", "VM.poweroff_hard", "VM.undeploy", "VM.undeploy_hard", "VM.migrate", "VM.migrate_live", "VM.attachdisk", "VM.detachdisk", "VM.attachnic", "VM.detachnic", "VM.disk_saveas"]; + ["VM.shutdown", "VM.shutdown_hard", "VM.stop", "VM.suspend", "VM.reboot", "VM.reboot_hard", "VM.resched", "VM.unresched", "VM.poweroff", "VM.poweroff_hard", "VM.undeploy", "VM.undeploy_hard", "VM.migrate", "VM.migrate_live", "VM.attachdisk", "VM.detachdisk", "VM.attachnic", "VM.detachnic", "VM.disk_saveas", "VM.disk_snapshot_create", "VM.disk_snapshot_revert", "VM.disk_snapshot_delete"]; LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.MIGRATE ] = []; LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.SAVE_STOP ] = []; LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.SAVE_SUSPEND ] = []; @@ -88,15 +88,15 @@ define(function(require) { LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.BOOT_STOPPED_FAILURE ] = []; LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.PROLOG_RESUME_FAILURE ] = []; LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.PROLOG_UNDEPLOY_FAILURE ] = []; - // TODO DISK_SNAPSHOT_POWEROFF - // TODO DISK_SNAPSHOT_REVERT_POWEROFF - // TODO DISK_SNAPSHOT_DELETE_POWEROFF - // TODO DISK_SNAPSHOT_SUSPENDED - // TODO DISK_SNAPSHOT_REVERT_SUSPENDED - // TODO DISK_SNAPSHOT_DELETE_SUSPENDED - // TODO DISK_SNAPSHOT - // TODO DISK_SNAPSHOT_REVERT - // TODO DISK_SNAPSHOT_DELETE + LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.DISK_SNAPSHOT_POWEROFF ] = []; + LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.DISK_SNAPSHOT_REVERT_POWEROFF ] = []; + LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.DISK_SNAPSHOT_DELETE_POWEROFF ] = []; + LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.DISK_SNAPSHOT_SUSPENDED ] = []; + LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.DISK_SNAPSHOT_REVERT_SUSPENDED ] = []; + LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.DISK_SNAPSHOT_DELETE_SUSPENDED ] = []; + LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.DISK_SNAPSHOT ] = []; + LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.DISK_SNAPSHOT_REVERT ] = []; + LCM_STATE_ACTIONS[ OpenNebulaVM.LCM_STATES.DISK_SNAPSHOT_DELETE ] = []; return { 'disableAllStateActions': disableAllStateActions,