mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-21 14:50:08 +03:00
by hypervisor & vm state
This commit is contained in:
parent
51d5a95a95
commit
61b920b505
@ -28,6 +28,7 @@ const DS_ID = {
|
||||
return arrayToOptions(
|
||||
datastores.filter(({ TEMPLATE }) => TEMPLATE.TYPE === 'BACKUP_DS'),
|
||||
{
|
||||
addEmpty: false,
|
||||
getText: ({ NAME, ID } = {}) => `${ID}: ${NAME}`,
|
||||
getValue: ({ ID } = {}) => ID,
|
||||
}
|
||||
|
@ -802,8 +802,8 @@ export const VM_ACTIONS = {
|
||||
UPDATE_CONF: 'update_configuration',
|
||||
}
|
||||
|
||||
/** @enum {string} Virtual machine actions by state */
|
||||
export const VM_ACTIONS_BY_STATE = {
|
||||
/** @enum {string} KVM Virtual machine actions by state */
|
||||
export const VM_ACTIONS_BY_STATE_KVM = {
|
||||
[VM_ACTIONS.BACKUP]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DEPLOY]: [
|
||||
STATES.PENDING,
|
||||
@ -984,6 +984,551 @@ export const VM_ACTIONS_BY_STATE = {
|
||||
],
|
||||
}
|
||||
|
||||
/** @enum {string} vCenter Virtual machine actions by state */
|
||||
export const VM_ACTIONS_BY_STATE_VCENTER = {
|
||||
[VM_ACTIONS.DEPLOY]: [
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.STOPPED,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.UNKNOWN,
|
||||
],
|
||||
[VM_ACTIONS.CREATE_APP_DIALOG]: [STATES.POWEROFF],
|
||||
[VM_ACTIONS.HOLD]: [STATES.PENDING],
|
||||
[VM_ACTIONS.LOCK]: [],
|
||||
[VM_ACTIONS.MIGRATE_LIVE]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.MIGRATE_POFF_HARD]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.MIGRATE_POFF]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.MIGRATE]: [
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.RUNNING,
|
||||
STATES.UNKNOWN,
|
||||
],
|
||||
[VM_ACTIONS.POWEROFF_HARD]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.POWEROFF]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.REBOOT_HARD]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.REBOOT]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.RECOVER]: [
|
||||
STATES.INIT,
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.ACTIVE,
|
||||
STATES.STOPPED,
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.CLONING,
|
||||
STATES.CLONING_FAILURE,
|
||||
],
|
||||
[VM_ACTIONS.RELEASE]: [STATES.HOLD],
|
||||
[VM_ACTIONS.RESCHED]: [STATES.POWEROFF, STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.RESUME]: [
|
||||
STATES.STOPPED,
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.UNKNOWN,
|
||||
],
|
||||
[VM_ACTIONS.SAVE_AS_TEMPLATE]: [STATES.POWEROFF],
|
||||
[VM_ACTIONS.STOP]: [STATES.SUSPENDED, STATES.RUNNING],
|
||||
[VM_ACTIONS.SUSPEND]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.TERMINATE_HARD]: [
|
||||
STATES.INIT,
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.STOPPED,
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.CLONING,
|
||||
STATES.CLONING_FAILURE,
|
||||
STATES.RUNNING,
|
||||
STATES.UNKNOWN,
|
||||
],
|
||||
[VM_ACTIONS.TERMINATE]: [
|
||||
STATES.RUNNING,
|
||||
STATES.FAILURE,
|
||||
STATES.BOOT_FAILURE,
|
||||
STATES.BOOT_MIGRATE_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_FAILURE,
|
||||
STATES.PROLOG_FAILURE,
|
||||
STATES.EPILOG_FAILURE,
|
||||
STATES.EPILOG_STOP_FAILURE,
|
||||
STATES.EPILOG_UNDEPLOY_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_POWEROFF_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_SUSPEND_FAILURE,
|
||||
STATES.BOOT_UNDEPLOY_FAILURE,
|
||||
STATES.BOOT_STOPPED_FAILURE,
|
||||
STATES.PROLOG_RESUME_FAILURE,
|
||||
STATES.PROLOG_UNDEPLOY_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_UNKNOWN_FAILURE,
|
||||
],
|
||||
[VM_ACTIONS.UNDEPLOY_HARD]: [STATES.POWEROFF, STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.UNDEPLOY]: [STATES.POWEROFF, STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.UNLOCK]: [],
|
||||
[VM_ACTIONS.UNRESCHED]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
|
||||
// REMOTE
|
||||
[VM_ACTIONS.VMRC]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.VNC]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.SSH]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.RDP]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.FILE_RDP]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.FILE_VIRT_VIEWER]: [STATES.RUNNING],
|
||||
|
||||
// INFORMATION
|
||||
[VM_ACTIONS.RENAME]: [],
|
||||
[VM_ACTIONS.CHANGE_MODE]: [],
|
||||
[VM_ACTIONS.CHANGE_OWNER]: [],
|
||||
[VM_ACTIONS.CHANGE_GROUP]: [],
|
||||
|
||||
// CAPACITY
|
||||
[VM_ACTIONS.RESIZE_CAPACITY]: [
|
||||
STATES.INIT,
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.ACTIVE,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.CLONING,
|
||||
STATES.CLONING_FAILURE,
|
||||
],
|
||||
|
||||
// STORAGE
|
||||
[VM_ACTIONS.ATTACH_DISK]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DETACH_DISK]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.SNAPSHOT_DISK_CREATE]: [
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.RUNNING,
|
||||
],
|
||||
[VM_ACTIONS.SNAPSHOT_DISK_RENAME]: [],
|
||||
[VM_ACTIONS.SNAPSHOT_DISK_REVERT]: [STATES.SUSPENDED, STATES.POWEROFF],
|
||||
[VM_ACTIONS.SNAPSHOT_DISK_DELETE]: [
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.RUNNING,
|
||||
],
|
||||
[VM_ACTIONS.RESIZE_DISK]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DISK_SAVEAS]: [STATES.SUSPENDED, STATES.POWEROFF, STATES.RUNNING],
|
||||
|
||||
// NETWORK
|
||||
[VM_ACTIONS.ATTACH_NIC]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DETACH_NIC]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.ATTACH_SEC_GROUP]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DETACH_SEC_GROUP]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
|
||||
// SNAPSHOT
|
||||
[VM_ACTIONS.SNAPSHOT_CREATE]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.SNAPSHOT_REVERT]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.SNAPSHOT_DELETE]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
|
||||
// SCHEDULING ACTION
|
||||
[VM_ACTIONS.SCHED_ACTION_CREATE]: [],
|
||||
[VM_ACTIONS.SCHED_ACTION_UPDATE]: [],
|
||||
[VM_ACTIONS.SCHED_ACTION_DELETE]: [],
|
||||
[VM_ACTIONS.CHARTER_CREATE]: [],
|
||||
|
||||
// CONFIGURATION
|
||||
[VM_ACTIONS.UPDATE_CONF]: [
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.ACTIVE,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.CLONING,
|
||||
STATES.CLONING_FAILURE,
|
||||
STATES.PROLOG,
|
||||
STATES.EPILOG,
|
||||
STATES.SHUTDOWN,
|
||||
STATES.CLEANUP_RESUBMIT,
|
||||
STATES.SHUTDOWN_POWEROFF,
|
||||
STATES.CLEANUP_DELETE,
|
||||
STATES.HOTPLUG_SAVEAS_POWEROFF,
|
||||
STATES.SHUTDOWN_UNDEPLOY,
|
||||
STATES.EPILOG_UNDEPLOY,
|
||||
STATES.PROLOG_UNDEPLOY,
|
||||
STATES.HOTPLUG_PROLOG_POWEROFF,
|
||||
STATES.HOTPLUG_EPILOG_POWEROFF,
|
||||
STATES.BOOT_FAILURE,
|
||||
STATES.PROLOG_FAILURE,
|
||||
STATES.EPILOG_FAILURE,
|
||||
STATES.EPILOG_UNDEPLOY_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_POWEROFF,
|
||||
STATES.PROLOG_MIGRATE_POWEROFF_FAILURE,
|
||||
STATES.BOOT_UNDEPLOY_FAILURE,
|
||||
STATES.PROLOG_UNDEPLOY_FAILURE,
|
||||
STATES.DISK_SNAPSHOT_POWEROFF,
|
||||
STATES.DISK_SNAPSHOT_REVERT_POWEROFF,
|
||||
STATES.DISK_SNAPSHOT_DELETE_POWEROFF,
|
||||
],
|
||||
}
|
||||
|
||||
/** @enum {string} Firecracker Virtual machine actions by state */
|
||||
export const VM_ACTIONS_BY_STATE_FIRECRACKER = {
|
||||
[VM_ACTIONS.BACKUP]: [STATES.POWEROFF],
|
||||
[VM_ACTIONS.DEPLOY]: [
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.STOPPED,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.UNKNOWN,
|
||||
],
|
||||
[VM_ACTIONS.CREATE_APP_DIALOG]: [STATES.POWEROFF],
|
||||
[VM_ACTIONS.HOLD]: [STATES.PENDING],
|
||||
[VM_ACTIONS.LOCK]: [],
|
||||
[VM_ACTIONS.MIGRATE_LIVE]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.MIGRATE_POFF_HARD]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.MIGRATE_POFF]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.MIGRATE]: [
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.RUNNING,
|
||||
STATES.UNKNOWN,
|
||||
],
|
||||
[VM_ACTIONS.POWEROFF_HARD]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.POWEROFF]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.REBOOT_HARD]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.REBOOT]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.RECOVER]: [
|
||||
STATES.INIT,
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.ACTIVE,
|
||||
STATES.STOPPED,
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.CLONING,
|
||||
STATES.CLONING_FAILURE,
|
||||
],
|
||||
[VM_ACTIONS.RELEASE]: [STATES.HOLD],
|
||||
[VM_ACTIONS.RESCHED]: [STATES.POWEROFF, STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.RESUME]: [
|
||||
STATES.STOPPED,
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.UNKNOWN,
|
||||
],
|
||||
[VM_ACTIONS.SAVE_AS_TEMPLATE]: [STATES.POWEROFF],
|
||||
[VM_ACTIONS.STOP]: [STATES.SUSPENDED, STATES.RUNNING],
|
||||
[VM_ACTIONS.SUSPEND]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.TERMINATE_HARD]: [
|
||||
STATES.INIT,
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.STOPPED,
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.CLONING,
|
||||
STATES.CLONING_FAILURE,
|
||||
STATES.RUNNING,
|
||||
STATES.UNKNOWN,
|
||||
],
|
||||
[VM_ACTIONS.TERMINATE]: [
|
||||
STATES.RUNNING,
|
||||
STATES.FAILURE,
|
||||
STATES.BOOT_FAILURE,
|
||||
STATES.BOOT_MIGRATE_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_FAILURE,
|
||||
STATES.PROLOG_FAILURE,
|
||||
STATES.EPILOG_FAILURE,
|
||||
STATES.EPILOG_STOP_FAILURE,
|
||||
STATES.EPILOG_UNDEPLOY_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_POWEROFF_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_SUSPEND_FAILURE,
|
||||
STATES.BOOT_UNDEPLOY_FAILURE,
|
||||
STATES.BOOT_STOPPED_FAILURE,
|
||||
STATES.PROLOG_RESUME_FAILURE,
|
||||
STATES.PROLOG_UNDEPLOY_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_UNKNOWN_FAILURE,
|
||||
],
|
||||
[VM_ACTIONS.UNDEPLOY_HARD]: [STATES.POWEROFF, STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.UNDEPLOY]: [STATES.POWEROFF, STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.UNLOCK]: [],
|
||||
[VM_ACTIONS.UNRESCHED]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
|
||||
// REMOTE
|
||||
[VM_ACTIONS.VMRC]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.VNC]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.SSH]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.RDP]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.FILE_RDP]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.FILE_VIRT_VIEWER]: [STATES.RUNNING],
|
||||
|
||||
// INFORMATION
|
||||
[VM_ACTIONS.RENAME]: [],
|
||||
[VM_ACTIONS.CHANGE_MODE]: [],
|
||||
[VM_ACTIONS.CHANGE_OWNER]: [],
|
||||
[VM_ACTIONS.CHANGE_GROUP]: [],
|
||||
|
||||
// CAPACITY
|
||||
[VM_ACTIONS.RESIZE_CAPACITY]: [
|
||||
STATES.INIT,
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.ACTIVE,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.CLONING,
|
||||
STATES.CLONING_FAILURE,
|
||||
],
|
||||
|
||||
// STORAGE
|
||||
[VM_ACTIONS.ATTACH_DISK]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DETACH_DISK]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.SNAPSHOT_DISK_CREATE]: [
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.RUNNING,
|
||||
],
|
||||
[VM_ACTIONS.SNAPSHOT_DISK_RENAME]: [],
|
||||
[VM_ACTIONS.SNAPSHOT_DISK_REVERT]: [STATES.SUSPENDED, STATES.POWEROFF],
|
||||
[VM_ACTIONS.SNAPSHOT_DISK_DELETE]: [
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.RUNNING,
|
||||
],
|
||||
[VM_ACTIONS.RESIZE_DISK]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DISK_SAVEAS]: [STATES.SUSPENDED, STATES.POWEROFF, STATES.RUNNING],
|
||||
|
||||
// NETWORK
|
||||
[VM_ACTIONS.ATTACH_NIC]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DETACH_NIC]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.ATTACH_SEC_GROUP]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DETACH_SEC_GROUP]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
|
||||
// SNAPSHOT
|
||||
[VM_ACTIONS.SNAPSHOT_CREATE]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.SNAPSHOT_REVERT]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.SNAPSHOT_DELETE]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
|
||||
// SCHEDULING ACTION
|
||||
[VM_ACTIONS.SCHED_ACTION_CREATE]: [],
|
||||
[VM_ACTIONS.SCHED_ACTION_UPDATE]: [],
|
||||
[VM_ACTIONS.SCHED_ACTION_DELETE]: [],
|
||||
[VM_ACTIONS.CHARTER_CREATE]: [],
|
||||
|
||||
// CONFIGURATION
|
||||
[VM_ACTIONS.UPDATE_CONF]: [
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.ACTIVE,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.CLONING,
|
||||
STATES.CLONING_FAILURE,
|
||||
STATES.PROLOG,
|
||||
STATES.EPILOG,
|
||||
STATES.SHUTDOWN,
|
||||
STATES.CLEANUP_RESUBMIT,
|
||||
STATES.SHUTDOWN_POWEROFF,
|
||||
STATES.CLEANUP_DELETE,
|
||||
STATES.HOTPLUG_SAVEAS_POWEROFF,
|
||||
STATES.SHUTDOWN_UNDEPLOY,
|
||||
STATES.EPILOG_UNDEPLOY,
|
||||
STATES.PROLOG_UNDEPLOY,
|
||||
STATES.HOTPLUG_PROLOG_POWEROFF,
|
||||
STATES.HOTPLUG_EPILOG_POWEROFF,
|
||||
STATES.BOOT_FAILURE,
|
||||
STATES.PROLOG_FAILURE,
|
||||
STATES.EPILOG_FAILURE,
|
||||
STATES.EPILOG_UNDEPLOY_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_POWEROFF,
|
||||
STATES.PROLOG_MIGRATE_POWEROFF_FAILURE,
|
||||
STATES.BOOT_UNDEPLOY_FAILURE,
|
||||
STATES.PROLOG_UNDEPLOY_FAILURE,
|
||||
STATES.DISK_SNAPSHOT_POWEROFF,
|
||||
STATES.DISK_SNAPSHOT_REVERT_POWEROFF,
|
||||
STATES.DISK_SNAPSHOT_DELETE_POWEROFF,
|
||||
],
|
||||
}
|
||||
|
||||
/** @enum {string} LXC Virtual machine actions by state */
|
||||
export const VM_ACTIONS_BY_STATE_LXC = {
|
||||
[VM_ACTIONS.BACKUP]: [STATES.POWEROFF],
|
||||
[VM_ACTIONS.DEPLOY]: [
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.STOPPED,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.UNKNOWN,
|
||||
],
|
||||
[VM_ACTIONS.CREATE_APP_DIALOG]: [STATES.POWEROFF],
|
||||
[VM_ACTIONS.HOLD]: [STATES.PENDING],
|
||||
[VM_ACTIONS.LOCK]: [],
|
||||
[VM_ACTIONS.MIGRATE_LIVE]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.MIGRATE_POFF_HARD]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.MIGRATE_POFF]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.MIGRATE]: [
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.RUNNING,
|
||||
STATES.UNKNOWN,
|
||||
],
|
||||
[VM_ACTIONS.POWEROFF_HARD]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.POWEROFF]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.REBOOT_HARD]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.REBOOT]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.RECOVER]: [
|
||||
STATES.INIT,
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.ACTIVE,
|
||||
STATES.STOPPED,
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.CLONING,
|
||||
STATES.CLONING_FAILURE,
|
||||
],
|
||||
[VM_ACTIONS.RELEASE]: [STATES.HOLD],
|
||||
[VM_ACTIONS.RESCHED]: [STATES.POWEROFF, STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.RESUME]: [
|
||||
STATES.STOPPED,
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.UNKNOWN,
|
||||
],
|
||||
[VM_ACTIONS.SAVE_AS_TEMPLATE]: [STATES.POWEROFF],
|
||||
[VM_ACTIONS.STOP]: [STATES.SUSPENDED, STATES.RUNNING],
|
||||
[VM_ACTIONS.SUSPEND]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.TERMINATE_HARD]: [
|
||||
STATES.INIT,
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.STOPPED,
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.CLONING,
|
||||
STATES.CLONING_FAILURE,
|
||||
STATES.RUNNING,
|
||||
STATES.UNKNOWN,
|
||||
],
|
||||
[VM_ACTIONS.TERMINATE]: [
|
||||
STATES.RUNNING,
|
||||
STATES.FAILURE,
|
||||
STATES.BOOT_FAILURE,
|
||||
STATES.BOOT_MIGRATE_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_FAILURE,
|
||||
STATES.PROLOG_FAILURE,
|
||||
STATES.EPILOG_FAILURE,
|
||||
STATES.EPILOG_STOP_FAILURE,
|
||||
STATES.EPILOG_UNDEPLOY_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_POWEROFF_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_SUSPEND_FAILURE,
|
||||
STATES.BOOT_UNDEPLOY_FAILURE,
|
||||
STATES.BOOT_STOPPED_FAILURE,
|
||||
STATES.PROLOG_RESUME_FAILURE,
|
||||
STATES.PROLOG_UNDEPLOY_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_UNKNOWN_FAILURE,
|
||||
],
|
||||
[VM_ACTIONS.UNDEPLOY_HARD]: [STATES.POWEROFF, STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.UNDEPLOY]: [STATES.POWEROFF, STATES.RUNNING, STATES.UNKNOWN],
|
||||
[VM_ACTIONS.UNLOCK]: [],
|
||||
[VM_ACTIONS.UNRESCHED]: [STATES.RUNNING, STATES.UNKNOWN],
|
||||
|
||||
// REMOTE
|
||||
[VM_ACTIONS.VMRC]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.VNC]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.SSH]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.RDP]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.FILE_RDP]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.FILE_VIRT_VIEWER]: [STATES.RUNNING],
|
||||
|
||||
// INFORMATION
|
||||
[VM_ACTIONS.RENAME]: [],
|
||||
[VM_ACTIONS.CHANGE_MODE]: [],
|
||||
[VM_ACTIONS.CHANGE_OWNER]: [],
|
||||
[VM_ACTIONS.CHANGE_GROUP]: [],
|
||||
|
||||
// CAPACITY
|
||||
[VM_ACTIONS.RESIZE_CAPACITY]: [
|
||||
STATES.INIT,
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.ACTIVE,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.CLONING,
|
||||
STATES.CLONING_FAILURE,
|
||||
],
|
||||
|
||||
// STORAGE
|
||||
[VM_ACTIONS.ATTACH_DISK]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DETACH_DISK]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.SNAPSHOT_DISK_CREATE]: [
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.RUNNING,
|
||||
],
|
||||
[VM_ACTIONS.SNAPSHOT_DISK_RENAME]: [],
|
||||
[VM_ACTIONS.SNAPSHOT_DISK_REVERT]: [STATES.SUSPENDED, STATES.POWEROFF],
|
||||
[VM_ACTIONS.SNAPSHOT_DISK_DELETE]: [
|
||||
STATES.SUSPENDED,
|
||||
STATES.POWEROFF,
|
||||
STATES.RUNNING,
|
||||
],
|
||||
[VM_ACTIONS.RESIZE_DISK]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DISK_SAVEAS]: [STATES.SUSPENDED, STATES.POWEROFF, STATES.RUNNING],
|
||||
|
||||
// NETWORK
|
||||
[VM_ACTIONS.ATTACH_NIC]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DETACH_NIC]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.ATTACH_SEC_GROUP]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
[VM_ACTIONS.DETACH_SEC_GROUP]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
|
||||
// SNAPSHOT
|
||||
[VM_ACTIONS.SNAPSHOT_CREATE]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.SNAPSHOT_REVERT]: [STATES.RUNNING],
|
||||
[VM_ACTIONS.SNAPSHOT_DELETE]: [STATES.POWEROFF, STATES.RUNNING],
|
||||
|
||||
// SCHEDULING ACTION
|
||||
[VM_ACTIONS.SCHED_ACTION_CREATE]: [],
|
||||
[VM_ACTIONS.SCHED_ACTION_UPDATE]: [],
|
||||
[VM_ACTIONS.SCHED_ACTION_DELETE]: [],
|
||||
[VM_ACTIONS.CHARTER_CREATE]: [],
|
||||
|
||||
// CONFIGURATION
|
||||
[VM_ACTIONS.UPDATE_CONF]: [
|
||||
STATES.PENDING,
|
||||
STATES.HOLD,
|
||||
STATES.ACTIVE,
|
||||
STATES.POWEROFF,
|
||||
STATES.UNDEPLOYED,
|
||||
STATES.CLONING,
|
||||
STATES.CLONING_FAILURE,
|
||||
STATES.PROLOG,
|
||||
STATES.EPILOG,
|
||||
STATES.SHUTDOWN,
|
||||
STATES.CLEANUP_RESUBMIT,
|
||||
STATES.SHUTDOWN_POWEROFF,
|
||||
STATES.CLEANUP_DELETE,
|
||||
STATES.HOTPLUG_SAVEAS_POWEROFF,
|
||||
STATES.SHUTDOWN_UNDEPLOY,
|
||||
STATES.EPILOG_UNDEPLOY,
|
||||
STATES.PROLOG_UNDEPLOY,
|
||||
STATES.HOTPLUG_PROLOG_POWEROFF,
|
||||
STATES.HOTPLUG_EPILOG_POWEROFF,
|
||||
STATES.BOOT_FAILURE,
|
||||
STATES.PROLOG_FAILURE,
|
||||
STATES.EPILOG_FAILURE,
|
||||
STATES.EPILOG_UNDEPLOY_FAILURE,
|
||||
STATES.PROLOG_MIGRATE_POWEROFF,
|
||||
STATES.PROLOG_MIGRATE_POWEROFF_FAILURE,
|
||||
STATES.BOOT_UNDEPLOY_FAILURE,
|
||||
STATES.PROLOG_UNDEPLOY_FAILURE,
|
||||
STATES.DISK_SNAPSHOT_POWEROFF,
|
||||
STATES.DISK_SNAPSHOT_REVERT_POWEROFF,
|
||||
STATES.DISK_SNAPSHOT_DELETE_POWEROFF,
|
||||
],
|
||||
}
|
||||
|
||||
/** @enum {string} Hypervisors */
|
||||
export const HYPERVISORS = {
|
||||
kvm: 'kvm',
|
||||
@ -992,6 +1537,14 @@ export const HYPERVISORS = {
|
||||
lxc: 'lxc',
|
||||
}
|
||||
|
||||
/** @enum {string} Virtual machine actions by state */
|
||||
export const VM_ACTIONS_BY_STATE = {
|
||||
[HYPERVISORS.kvm]: VM_ACTIONS_BY_STATE_KVM,
|
||||
[HYPERVISORS.vcenter]: VM_ACTIONS_BY_STATE_VCENTER,
|
||||
[HYPERVISORS.firecracker]: VM_ACTIONS_BY_STATE_FIRECRACKER,
|
||||
[HYPERVISORS.lxc]: VM_ACTIONS_BY_STATE_LXC,
|
||||
}
|
||||
|
||||
/** @type {string[]} Actions that can be scheduled */
|
||||
export const VM_ACTIONS_WITH_SCHEDULE = [
|
||||
VM_ACTIONS.BACKUP,
|
||||
|
@ -300,23 +300,23 @@ export const getScheduleActions = (vm) => {
|
||||
* @param {VM|VM[]} vms - Virtual machines
|
||||
* @returns {boolean} If `true`, the action is available for all VMs
|
||||
*/
|
||||
export const isAvailableAction = (action, vms = []) => {
|
||||
if (VM_ACTIONS_BY_STATE[action]?.length === 0) return true
|
||||
|
||||
return [vms].flat().every((vm) => {
|
||||
export const isAvailableAction = (action, vms = []) =>
|
||||
[vms].flat().every((vm) => {
|
||||
const hypervisor = getHypervisor(vm)
|
||||
const state = VM_STATES[vm.STATE]?.name
|
||||
const lcmState = VM_LCM_STATES[vm.LCM_STATE]?.name
|
||||
|
||||
if (VM_ACTIONS_BY_STATE[hypervisor]?.[action]?.length === 0) return true
|
||||
|
||||
return (
|
||||
(state === STATES.ACTIVE &&
|
||||
// if action includes ACTIVE state,
|
||||
// it means that the action is available in all LCM states
|
||||
(VM_ACTIONS_BY_STATE[action]?.includes(STATES.ACTIVE) ||
|
||||
VM_ACTIONS_BY_STATE[action]?.includes(lcmState))) ||
|
||||
VM_ACTIONS_BY_STATE[action]?.includes(state)
|
||||
(VM_ACTIONS_BY_STATE[hypervisor]?.[action]?.includes(STATES.ACTIVE) ||
|
||||
VM_ACTIONS_BY_STATE[hypervisor]?.[action]?.includes(lcmState))) ||
|
||||
VM_ACTIONS_BY_STATE[hypervisor]?.[action]?.includes(state)
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {VM} vm - Virtual machine
|
||||
|
@ -219,6 +219,14 @@ define(function(require) {
|
||||
$('input#image_ds_type', dialog).attr('disabled', 'disabled');
|
||||
_selectRestic(dialog);
|
||||
break;
|
||||
|
||||
case "rsync":
|
||||
$('input#backup_ds_type', dialog).click()
|
||||
$('input#system_ds_type', dialog).attr('disabled', 'disabled');
|
||||
$('input#file_ds_type', dialog).attr('disabled', 'disabled');
|
||||
$('input#image_ds_type', dialog).attr('disabled', 'disabled');
|
||||
_selectRsync(dialog);
|
||||
break;
|
||||
|
||||
case 'custom':
|
||||
_selectCustom(dialog);
|
||||
@ -282,6 +290,8 @@ define(function(require) {
|
||||
var restic_bwlimit = $('#restic_bwlimit', dialog).val();
|
||||
var restic_compression = $('#restic_compression', dialog).val();
|
||||
var restic_connections = $('#restic_connections', dialog).val();
|
||||
var rsync_host = $('#rsync_host', dialog).val();
|
||||
var rsync_user = $('#rsync_user', dialog).val();
|
||||
|
||||
var ds_obj = {
|
||||
"datastore" : {
|
||||
@ -391,6 +401,12 @@ define(function(require) {
|
||||
if (restic_connections)
|
||||
ds_obj.datastore.restic_connections = restic_connections;
|
||||
|
||||
if (rsync_host)
|
||||
ds_obj.datastore.rsync_host = rsync_host;
|
||||
|
||||
if (rsync_user)
|
||||
ds_obj.datastore.rsync_user = rsync_user;
|
||||
|
||||
Sunstone.runAction("Datastore.create", ds_obj);
|
||||
return false;
|
||||
}
|
||||
@ -447,6 +463,8 @@ define(function(require) {
|
||||
$('label[for="restic_compression"]', dialog).parent().hide();
|
||||
$('label[for="restic_connections"]', dialog).parent().hide();
|
||||
$('label[for="restic_sftp_server"]', dialog).parent().hide();
|
||||
$('label[for="rsync_host"]', dialog).parent().hide();
|
||||
$('label[for="rsync_user"]', dialog).parent().hide();
|
||||
|
||||
$('input[name="ds_tab_custom_ds_mad"]', dialog).parent().hide();
|
||||
$('input[name="ds_tab_custom_tm_mad"]', dialog).parent().hide();
|
||||
@ -484,6 +502,8 @@ define(function(require) {
|
||||
$('label[for="restic_compression"]', dialog).parent().show();
|
||||
$('label[for="restic_connections"]', dialog).parent().show();
|
||||
$('label[for="restic_sftp_server"]', dialog).parent().show();
|
||||
$('label[for="rsync_host"]', dialog).parent().show();
|
||||
$('label[for="rsync_user"]', dialog).parent().show();
|
||||
|
||||
$('input[name="ds_tab_custom_ds_mad"]', dialog).parent().show();
|
||||
$('input[name="ds_tab_custom_tm_mad"]', dialog).parent().show();
|
||||
@ -602,6 +622,19 @@ define(function(require) {
|
||||
$('label[for="restic_sftp_server"]', dialog).parent().fadeIn();
|
||||
}
|
||||
|
||||
function _selectRsync(dialog) {
|
||||
$('select#disk_type', dialog).val('block');
|
||||
$('label[for="limit_transfer_bw"],input#limit_transfer_bw', dialog).parent().hide();
|
||||
$('label[for="no_decompress"],input#no_decompress', dialog).parent().hide();
|
||||
$('label[for="datastore_capacity_check"],input#datastore_capacity_check', dialog).parent().hide();
|
||||
$('input#safe_dirs', dialog).attr('disabled', 'disabled');
|
||||
$('input#limit_mb', dialog).attr('disabled', 'disabled');
|
||||
$('input#restricted_dirs', dialog).attr('disabled', 'disabled');
|
||||
$('label[for="vcenter_cluster"],div#vcenter_cluster_wrapper', dialog).parent().hide();
|
||||
$('label[for="rsync_host"]', dialog).parent().fadeIn();
|
||||
$('label[for="rsync_user"]', dialog).parent().fadeIn();
|
||||
}
|
||||
|
||||
function _selectCustom(dialog) {
|
||||
_showAll(dialog);
|
||||
|
||||
|
@ -33,7 +33,8 @@
|
||||
<option ds="fs" tm="fs_lvm" value="lvm">{{tr "LVM"}}</option>
|
||||
<option ds="dev" tm="dev" value="raw">{{tr "Raw Device Mapping"}}</option>
|
||||
<option ds="iscsi_libvirt" tm="iscsi_libvirt" value="iscsi_libvirt">{{tr "iSCSI - Libvirt initiator "}}</option>
|
||||
<option ds="restic" tm="-" value="restic">{{tr "Backup - Restic"}}</option>
|
||||
<option ds="restic" tm="-" value="restic">{{tr "Backup - Restic (EE Only)"}}</option>
|
||||
<option ds="rsync" tm="-" value="rsync">{{tr "Backup - RSync"}}</option>
|
||||
<option value="custom">{{tr "Custom"}}</option>
|
||||
</select>
|
||||
</div>
|
||||
@ -245,21 +246,17 @@
|
||||
<div id="vcenter_cluster_wrapper"></div>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<!-- RESTIC ATTRIBUTES -->
|
||||
<div class="medium-6 columns">
|
||||
<label for="restic_password">
|
||||
{{tr "Restic Password"}}
|
||||
{{!-- <span class="tip">
|
||||
{{tr ""}}
|
||||
</span> --}}
|
||||
</label>
|
||||
<input type="text" name="restic_password" id="restic_password" />
|
||||
</div>
|
||||
<div class="medium-6 columns">
|
||||
<label for="restic_sftp_server">
|
||||
{{tr "Restic SFTP Server"}}
|
||||
{{!-- <span class="tip">
|
||||
{{tr ""}}
|
||||
</span> --}}
|
||||
</label>
|
||||
<input type="text" name="restic_sftp_server" id="restic_sftp_server" />
|
||||
</div>
|
||||
@ -318,6 +315,22 @@
|
||||
</label>
|
||||
<input type="number" name="restic_connections" id="restic_connections"/>
|
||||
</div>
|
||||
|
||||
<!-- RSYNC ATTRIBUTES -->
|
||||
<div class="medium-6 columns">
|
||||
<label for="rsync_host">
|
||||
{{tr "RSync host"}}
|
||||
</label>
|
||||
<input type="text" name="rsync_host" id="rsync_host"/>
|
||||
</div>
|
||||
|
||||
<div class="medium-6 columns">
|
||||
<label for="rsync_user">
|
||||
{{tr "RSync user"}}
|
||||
</label>
|
||||
<input type="text" name="rsync_user" id="rsync_user"/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="ceph_advanced">
|
||||
{{#advancedSection (tr "Advanced options") }}
|
||||
|
Loading…
x
Reference in New Issue
Block a user