mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-23 22:50:09 +03:00
feature #3748: Add state actions
This commit is contained in:
parent
bb0fb56c2d
commit
667eaba1e9
@ -9,6 +9,8 @@ define(function(require) {
|
||||
var PermissionsTable = require('utils/panel/permissions-table');
|
||||
var TemplateTable = require('utils/panel/template-table');
|
||||
var OpenNebulaVm = require('opennebula/vm');
|
||||
var StateActions = require('../utils/state-actions');
|
||||
var VncSpiceUtils = require('../utils/vnc-spice-utils');
|
||||
|
||||
/*
|
||||
TEMPLATES
|
||||
@ -84,6 +86,22 @@ define(function(require) {
|
||||
}
|
||||
|
||||
function _setup(context) {
|
||||
// Enable only action buttons for the current state
|
||||
StateActions.disableAllStateActions();
|
||||
StateActions.enableStateActions(this.element.STATE, this.element.LCM_STATE);
|
||||
// Enable / disable vnc button
|
||||
if (!VncSpiceUtils.VNCEnabled(this.element)) {
|
||||
$(".vnc-right-info").hide();
|
||||
} else {
|
||||
$(".vnc-right-info").show();
|
||||
}
|
||||
|
||||
if (!VncSpiceUtils.SPICEEnabled(this.element)) {
|
||||
$(".spice-right-info").hide();
|
||||
} else {
|
||||
$(".spice-right-info").show();
|
||||
}
|
||||
|
||||
RenameTr.setup(RESOURCE, this.element.ID, context);
|
||||
PermissionsTable.setup(TAB_ID, RESOURCE, this.element, context);
|
||||
|
||||
|
195
src/sunstone/public/app/tabs/vms-tab/utils/state-actions.js
Normal file
195
src/sunstone/public/app/tabs/vms-tab/utils/state-actions.js
Normal file
@ -0,0 +1,195 @@
|
||||
define(function(require) {
|
||||
var OpenNebulaVM = require('opennebula/vm');
|
||||
|
||||
var STATE_ACTIONS = {
|
||||
0: //OpenNebulaVM.state.INIT:
|
||||
["VM.delete", "VM.delete_recreate", "VM.resize"],
|
||||
|
||||
1: //OpenNebulaVM.state.PENDING:
|
||||
["VM.delete", "VM.delete_recreate", "VM.hold", "VM.deploy"],
|
||||
|
||||
2: //OpenNebulaVM.state.HOLD:
|
||||
["VM.delete", "VM.delete_recreate", "VM.release", "VM.deploy"],
|
||||
|
||||
3: //OpenNebulaVM.state.ACTIVE:
|
||||
["VM.delete", "VM.delete_recreate", "VM.recover"],
|
||||
|
||||
4: //OpenNebulaVM.state.STOPPED:
|
||||
["VM.delete", "VM.delete_recreate", "VM.resume", "VM.deploy"],
|
||||
|
||||
5: //OpenNebulaVM.state.SUSPENDED:
|
||||
["VM.delete", "VM.resume", "VM.saveas", "VM.disk_snapshot_cancel", "VM.stop", "VM.shutdown_hard"],
|
||||
6: //OpenNebulaVM.state.DONE:
|
||||
[],
|
||||
|
||||
7: //OpenNebulaVM.state.FAILED:
|
||||
["VM.delete", "VM.delete_recreate", "VM.resize"],
|
||||
|
||||
8: //OpenNebulaVM.state.POWEROFF:
|
||||
["VM.delete", "VM.resume", "VM.resize", "VM.attachdisk", "VM.detachdisk", "VM.attachnic", "VM.detachnic", "VM.saveas", "VM.disk_snapshot_cancel", "VM.migrate", "VM.undeploy", "VM.undeploy_hard", "VM.shutdown_hard"],
|
||||
|
||||
9: //OpenNebulaVM.state.UNDEPLOYED:
|
||||
["VM.delete", "VM.delete_recreate", "VM.resume", "VM.resize", "VM.deploy"],
|
||||
}
|
||||
|
||||
var LCM_STATE_ACTIONS = {
|
||||
0: //OpenNebulaVM.lcm_state.LCM_INIT:
|
||||
[],
|
||||
1: //OpenNebulaVM.lcm_state.PROLOG:
|
||||
[],
|
||||
2: //OpenNebulaVM.lcm_state.BOOT:
|
||||
[],
|
||||
3: //OpenNebulaVM.lcm_state.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.saveas", "VM.disk_snapshot_cancel"],
|
||||
4: //OpenNebulaVM.lcm_state.MIGRATE:
|
||||
[],
|
||||
5: //OpenNebulaVM.lcm_state.SAVE_STOP:
|
||||
[],
|
||||
6: //OpenNebulaVM.lcm_state.SAVE_SUSPEND:
|
||||
[],
|
||||
7: //OpenNebulaVM.lcm_state.SAVE_MIGRATE:
|
||||
[],
|
||||
8: //OpenNebulaVM.lcm_state.PROLOG_MIGRATE:
|
||||
[],
|
||||
9: //OpenNebulaVM.lcm_state.PROLOG_RESUME:
|
||||
[],
|
||||
10: //OpenNebulaVM.lcm_state.EPILOG_STOP:
|
||||
[],
|
||||
11: //OpenNebulaVM.lcm_state.EPILOG:
|
||||
[],
|
||||
12: //OpenNebulaVM.lcm_state.SHUTDOWN:
|
||||
[],
|
||||
13: //OpenNebulaVM.lcm_state.CANCEL:
|
||||
[],
|
||||
14: //OpenNebulaVM.lcm_state.FAILURE:
|
||||
[],
|
||||
15: //OpenNebulaVM.lcm_state.CLEANUP_RESUBMIT:
|
||||
[],
|
||||
16: //OpenNebulaVM.lcm_state.UNKNOWN:
|
||||
["VM.shutdown", "VM.shutdown_hard", "VM.resched", "VM.unresched", "VM.poweroff", "VM.poweroff_hard", "VM.undeploy", "VM.undeploy_hard", "VM.migrate", "VM.migrate_live", "VM.disk_snapshot_cancel", "VM.resume"],
|
||||
17: //OpenNebulaVM.lcm_state.HOTPLUG:
|
||||
[],
|
||||
18: //OpenNebulaVM.lcm_state.SHUTDOWN_POWEROFF:
|
||||
[],
|
||||
19: //OpenNebulaVM.lcm_state.BOOT_UNKNOWN:
|
||||
[],
|
||||
20: //OpenNebulaVM.lcm_state.BOOT_POWEROFF:
|
||||
[],
|
||||
21: //OpenNebulaVM.lcm_state.BOOT_SUSPENDED:
|
||||
[],
|
||||
22: //OpenNebulaVM.lcm_state.BOOT_STOPPED:
|
||||
[],
|
||||
23: //OpenNebulaVM.lcm_state.CLEANUP_DELETE:
|
||||
[],
|
||||
24: //OpenNebulaVM.lcm_state.HOTPLUG_SNAPSHOT:
|
||||
[],
|
||||
25: //OpenNebulaVM.lcm_state.HOTPLUG_NIC:
|
||||
[],
|
||||
26: //OpenNebulaVM.lcm_state.HOTPLUG_SAVEAS:
|
||||
[],
|
||||
27: //OpenNebulaVM.lcm_state.HOTPLUG_SAVEAS_POWEROFF:
|
||||
[],
|
||||
28: //OpenNebulaVM.lcm_state.HOTPLUG_SAVEAS_SUSPENDED:
|
||||
[],
|
||||
29: //OpenNebulaVM.lcm_state.SHUTDOWN_UNDEPLOY:
|
||||
[],
|
||||
30: //OpenNebulaVM.lcm_state.EPILOG_UNDEPLOY:
|
||||
[],
|
||||
31: //OpenNebulaVM.lcm_state.PROLOG_UNDEPLOY:
|
||||
[],
|
||||
32: //OpenNebulaVM.lcm_state.BOOT_UNDEPLOY:
|
||||
[],
|
||||
33: //OpenNebulaVM.lcm_state.HOTPLUG_PROLOG_POWEROFF:
|
||||
[],
|
||||
34: //OpenNebulaVM.lcm_state.HOTPLUG_EPILOG_POWEROFF:
|
||||
[],
|
||||
35: //OpenNebulaVM.lcm_state.BOOT_MIGRATE:
|
||||
[],
|
||||
36: //OpenNebulaVM.lcm_state.BOOT_FAILURE:
|
||||
[],
|
||||
37: //OpenNebulaVM.lcm_state.BOOT_MIGRATE_FAILURE:
|
||||
[],
|
||||
38: //OpenNebulaVM.lcm_state.PROLOG_MIGRATE_FAILURE:
|
||||
[],
|
||||
39: //OpenNebulaVM.lcm_state.PROLOG_FAILURE:
|
||||
[],
|
||||
40: //OpenNebulaVM.lcm_state.EPILOG_FAILURE:
|
||||
[],
|
||||
41: //OpenNebulaVM.lcm_state.EPILOG_STOP_FAILURE:
|
||||
[],
|
||||
42: //OpenNebulaVM.lcm_state.EPILOG_UNDEPLOY_FAILURE:
|
||||
[],
|
||||
43: //OpenNebulaVM.lcm_state.PROLOG_MIGRATE_POWEROFF:
|
||||
[],
|
||||
44: //OpenNebulaVM.lcm_state.PROLOG_MIGRATE_POWEROFF_FAILURE:
|
||||
[],
|
||||
45: //OpenNebulaVM.lcm_state.PROLOG_MIGRATE_SUSPEND:
|
||||
[],
|
||||
46: //OpenNebulaVM.lcm_state.PROLOG_MIGRATE_SUSPEND_FAILURE:
|
||||
[],
|
||||
47: //OpenNebulaVM.lcm_state.BOOT_UNDEPLOY_FAILURE:
|
||||
[],
|
||||
48: //OpenNebulaVM.lcm_state.BOOT_STOPPED_FAILURE:
|
||||
[],
|
||||
49: //OpenNebulaVM.lcm_state.PROLOG_RESUME_FAILURE:
|
||||
[],
|
||||
50: //OpenNebulaVM.lcm_state.PROLOG_UNDEPLOY_FAILURE:
|
||||
[]
|
||||
}
|
||||
|
||||
return {
|
||||
'disableAllStateActions': disableAllStateActions,
|
||||
'resetStateButtons': resetStateButtons,
|
||||
'enableStateButton': enableStateButton,
|
||||
'enableStateActions': enableStateActions,
|
||||
'enabledStateAction': enabledStateAction
|
||||
};
|
||||
|
||||
function disableAllStateActions() {
|
||||
$(".state-dependent").attr("disabled", "disabled").
|
||||
removeClass("vm-action-enabled").
|
||||
addClass("vm-action-disabled").
|
||||
on("click.stateaction", function(e) { return false; });
|
||||
}
|
||||
|
||||
function resetStateButtons() {
|
||||
$(".state-dependent").
|
||||
addClass("vm-action-enabled").
|
||||
removeClass("vm-action-disabled").
|
||||
off(".stateaction");
|
||||
}
|
||||
|
||||
function enableStateButton(button_action) {
|
||||
$(".state-dependent[href='" + button_action + "']").removeAttr("disabled").
|
||||
addClass("vm-action-enabled").
|
||||
removeClass("vm-action-disabled").
|
||||
off(".stateaction");
|
||||
}
|
||||
|
||||
// state and lcm_state are numeric
|
||||
function enableStateActions(state, lcm_state) {
|
||||
var state = parseInt(state);
|
||||
var lcm_state = parseInt(lcm_state);
|
||||
|
||||
$.each(STATE_ACTIONS[state], function(i, action) {
|
||||
enableStateButton(action);
|
||||
});
|
||||
|
||||
if (state == OpenNebulaVM.state.ACTIVE) {
|
||||
$.each(LCM_STATE_ACTIONS[lcm_state], function(i, action) {
|
||||
enableStateButton(action);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Returns true if the action is enabled for the given state
|
||||
// action is "VM.action", state and lcm_state are numeric
|
||||
function enabledStateAction(action, state, lcm_state) {
|
||||
var state = parseInt(state);
|
||||
var lcm_state = parseInt(lcm_state);
|
||||
|
||||
return (STATE_ACTIONS[state].indexOf(action) != -1 ||
|
||||
(state == OpenNebulaVM.state.ACTIVE &&
|
||||
LCM_STATE_ACTIONS[lcm_state].indexOf(action) != -1));
|
||||
}
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user