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,