Laszlo Hornyak has uploaded a new change for review. Change subject: engine: watchdog support [wip] ......................................................................
engine: watchdog support [wip] Watchdog device support for the engine: - Backend logic to handle the new device - Frontend modifications - Restapi support http://www.ovirt.org/Features/Watchdog_engine_support Change-Id: Ibe5c36995dafcef6b3ad45a9e0ca8b0471324b70 Signed-off-by: Laszlo Hornyak <[email protected]> --- M backend/manager/dbscripts/create_views.sql A backend/manager/dbscripts/upgrade/03_02_0470_watchdog.sql M backend/manager/dbscripts/vms_sp.sql M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceType.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java M backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java 32 files changed, 279 insertions(+), 13 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/19/12419/1 diff --git a/backend/manager/dbscripts/create_views.sql b/backend/manager/dbscripts/create_views.sql index ec9d080..8d73830 100644 --- a/backend/manager/dbscripts/create_views.sql +++ b/backend/manager/dbscripts/create_views.sql @@ -550,7 +550,8 @@ vm_statistics.usage_mem_percent as usage_mem_percent, vm_statistics.usage_cpu_percent as usage_cpu_percent, vds_static.vds_name as run_on_vds_name, vds_groups.cpu_name as vds_group_cpu_name, vm_static.default_display_type as default_display_type, vm_static.priority as priority,vm_static.iso_path as iso_path, vm_static.origin as origin, vds_groups.compatibility_version as vds_group_compatibility_version, vm_static.initrd_url as initrd_url, vm_static.kernel_url as kernel_url, vm_static.kernel_params as kernel_params, vm_dynamic.pause_status as pause_status, vm_dynamic.exit_message as exit_message, vm_dynamic.exit_status as exit_status,vm_static.migration_support as migration_support,vm_static.predefined_properties as predefined_properties,vm_static.userdefined_properties as userdefined_properties,vm_static.min_allocated_mem as min_allocated_mem, vm_dynamic.hash as hash, vm_static.cpu_pinning as cpu_pinning, vm_static.db_generation as db_generation, vm_static.host_cpu_flags as host_cpu_flags, - vm_static.tunnel_migration as tunnel_migration, vm_static.vnc_keyboard_layout as vnc_keyboard_layout + vm_static.tunnel_migration as tunnel_migration, vm_static.vnc_keyboard_layout as vnc_keyboard_layout, + vm_static.watchdog_model as watchdog_model, vm_static.watchdog_action as watchdog_action FROM vm_static INNER JOIN vm_dynamic ON vm_static.vm_guid = vm_dynamic.vm_guid INNER JOIN vm_static AS vm_templates ON vm_static.vmt_guid = vm_templates.vm_guid INNER JOIN diff --git a/backend/manager/dbscripts/upgrade/03_02_0470_watchdog.sql b/backend/manager/dbscripts/upgrade/03_02_0470_watchdog.sql new file mode 100644 index 0000000..7c01cb7 --- /dev/null +++ b/backend/manager/dbscripts/upgrade/03_02_0470_watchdog.sql @@ -0,0 +1,4 @@ + +alter table vm_static add watchdog_model varchar(16) default null; +alter table vm_static add watchdog_action varchar(16) default null; + diff --git a/backend/manager/dbscripts/vms_sp.sql b/backend/manager/dbscripts/vms_sp.sql index feb629b..0210165 100644 --- a/backend/manager/dbscripts/vms_sp.sql +++ b/backend/manager/dbscripts/vms_sp.sql @@ -430,12 +430,14 @@ v_cpu_pinning VARCHAR(4000), v_host_cpu_flags BOOLEAN, v_tunnel_migration BOOLEAN, - v_vnc_keyboard_layout VARCHAR(16)) + v_vnc_keyboard_layout VARCHAR(16), + v_watchdog_model varchar(16), + v_watchdog_action varchar(16)) RETURNS VOID AS $procedure$ BEGIN -INSERT INTO vm_static(description, mem_size_mb, os, vds_group_id, vm_guid, VM_NAME, vmt_guid,domain,creation_date,num_of_monitors,allow_console_reconnect,is_initialized,is_auto_suspend,num_of_sockets,cpu_per_socket,usb_policy, time_zone,auto_startup,is_stateless,dedicated_vm_for_vds, fail_back, default_boot_sequence, vm_type, nice_level, default_display_type, priority,iso_path,origin,initrd_url,kernel_url,kernel_params,migration_support,predefined_properties,userdefined_properties,min_allocated_mem, entity_type, quota_id, cpu_pinning, is_smartcard_enabled,is_delete_protected,host_cpu_flags, tunnel_migration, vnc_keyboard_layout) - VALUES(v_description, v_mem_size_mb, v_os, v_vds_group_id, v_vm_guid, v_vm_name, v_vmt_guid, v_domain, v_creation_date, v_num_of_monitors, v_allow_console_reconnect, v_is_initialized, v_is_auto_suspend, v_num_of_sockets, v_cpu_per_socket, v_usb_policy, v_time_zone, v_auto_startup,v_is_stateless,v_dedicated_vm_for_vds,v_fail_back, v_default_boot_sequence, v_vm_type, v_nice_level, v_default_display_type, v_priority,v_iso_path,v_origin,v_initrd_url,v_kernel_url,v_kernel_params,v_migration_support,v_predefined_properties,v_userdefined_properties,v_min_allocated_mem, 'VM', v_quota_id, v_cpu_pinning, v_is_smartcard_enabled,v_is_delete_protected,v_host_cpu_flags, v_tunnel_migration, v_vnc_keyboard_layout); +INSERT INTO vm_static(description, mem_size_mb, os, vds_group_id, vm_guid, VM_NAME, vmt_guid,domain,creation_date,num_of_monitors,allow_console_reconnect,is_initialized,is_auto_suspend,num_of_sockets,cpu_per_socket,usb_policy, time_zone,auto_startup,is_stateless,dedicated_vm_for_vds, fail_back, default_boot_sequence, vm_type, nice_level, default_display_type, priority,iso_path,origin,initrd_url,kernel_url,kernel_params,migration_support,predefined_properties,userdefined_properties,min_allocated_mem, entity_type, quota_id, cpu_pinning, is_smartcard_enabled,is_delete_protected,host_cpu_flags, tunnel_migration, vnc_keyboard_layout, watchdog_model, watchdog_action) + VALUES(v_description, v_mem_size_mb, v_os, v_vds_group_id, v_vm_guid, v_vm_name, v_vmt_guid, v_domain, v_creation_date, v_num_of_monitors, v_allow_console_reconnect, v_is_initialized, v_is_auto_suspend, v_num_of_sockets, v_cpu_per_socket, v_usb_policy, v_time_zone, v_auto_startup,v_is_stateless,v_dedicated_vm_for_vds,v_fail_back, v_default_boot_sequence, v_vm_type, v_nice_level, v_default_display_type, v_priority,v_iso_path,v_origin,v_initrd_url,v_kernel_url,v_kernel_params,v_migration_support,v_predefined_properties,v_userdefined_properties,v_min_allocated_mem, 'VM', v_quota_id, v_cpu_pinning, v_is_smartcard_enabled,v_is_delete_protected,v_host_cpu_flags, v_tunnel_migration, v_vnc_keyboard_layout, v_watchdog_model, v_watchdog_action); -- perform deletion from vm_ovf_generations to ensure that no record exists when performing insert to avoid PK violation. DELETE FROM vm_ovf_generations gen WHERE gen.vm_guid = v_vm_guid; INSERT INTO vm_ovf_generations(vm_guid, storage_pool_id) VALUES (v_vm_guid, (SELECT storage_pool_id FROM vds_groups vg WHERE vg.vds_group_id = v_vds_group_id)); @@ -545,7 +547,9 @@ v_cpu_pinning VARCHAR(4000), v_host_cpu_flags BOOLEAN, v_tunnel_migration BOOLEAN, -v_vnc_keyboard_layout VARCHAR(16)) +v_vnc_keyboard_layout VARCHAR(16), +v_watchdog_model VARCHAR(16), +v_watchdog_action VARCHAR(16)) RETURNS VOID --The [vm_static] table doesn't have a timestamp column. Optimistic concurrency logic cannot be generated @@ -569,7 +573,9 @@ predefined_properties = v_predefined_properties,userdefined_properties = v_userdefined_properties, min_allocated_mem = v_min_allocated_mem, quota_id = v_quota_id, cpu_pinning = v_cpu_pinning, is_smartcard_enabled = v_is_smartcard_enabled, is_delete_protected = v_is_delete_protected, host_cpu_flags = v_host_cpu_flags, tunnel_migration = v_tunnel_migration, - vnc_keyboard_layout = v_vnc_keyboard_layout + vnc_keyboard_layout = v_vnc_keyboard_layout, + watchdog_model = v_watchdog_model, + watchdog_action = v_watchdog_action WHERE vm_guid = v_vm_guid AND entity_type = 'VM'; END; $procedure$ @@ -878,12 +884,14 @@ v_min_allocated_mem INTEGER, v_cpu_pinning varchar(4000), v_host_cpu_flags BOOLEAN, - v_tunnel_migration BOOLEAN) + v_tunnel_migration BOOLEAN, + v_watchdog_model VARCHAR(16), + v_watchdog_action VARCHAR(16)) RETURNS VOID AS $procedure$ BEGIN -INSERT INTO vm_static(description, mem_size_mb, os, vds_group_id, vm_guid, VM_NAME, vmt_guid, num_of_monitors, allow_console_reconnect, is_initialized, is_auto_suspend, num_of_sockets, cpu_per_socket, usb_policy, time_zone,auto_startup,is_stateless,dedicated_vm_for_vds,fail_back,vm_type,nice_level,default_boot_sequence,default_display_type,priority,iso_path,origin,initrd_url,kernel_url,kernel_params,migration_support,predefined_properties,userdefined_properties,min_allocated_mem,cpu_pinning,is_smartcard_enabled,is_delete_protected,host_cpu_flags, tunnel_migration) - VALUES(v_description, v_mem_size_mb, v_os, v_vds_group_id, v_vm_guid, v_vm_name, v_vmt_guid, v_num_of_monitors, v_num_of_monitors, v_is_initialized, v_is_auto_suspend, v_num_of_sockets, v_cpu_per_socket, v_usb_policy, v_time_zone,v_auto_startup,v_is_stateless,v_dedicated_vm_for_vds,v_fail_back,v_vm_type,v_nice_level,v_default_boot_sequence,v_default_display_type,v_priority,v_iso_path,v_origin,v_initrd_url,v_kernel_url,v_kernel_params,v_migration_support,v_predefined_properties,v_userdefined_properties,v_min_allocated_mem,v_cpu_pinning,v_is_smartcard_enabled,v_is_delete_protected,v_host_cpu_flags, v_tunnel_migration); +INSERT INTO vm_static(description, mem_size_mb, os, vds_group_id, vm_guid, VM_NAME, vmt_guid, num_of_monitors, allow_console_reconnect, is_initialized, is_auto_suspend, num_of_sockets, cpu_per_socket, usb_policy, time_zone,auto_startup,is_stateless,dedicated_vm_for_vds,fail_back,vm_type,nice_level,default_boot_sequence,default_display_type,priority,iso_path,origin,initrd_url,kernel_url,kernel_params,migration_support,predefined_properties,userdefined_properties,min_allocated_mem,cpu_pinning,is_smartcard_enabled,is_delete_protected,host_cpu_flags, tunnel_migration, watchdog_model, watchdog_action) + VALUES(v_description, v_mem_size_mb, v_os, v_vds_group_id, v_vm_guid, v_vm_name, v_vmt_guid, v_num_of_monitors, v_num_of_monitors, v_is_initialized, v_is_auto_suspend, v_num_of_sockets, v_cpu_per_socket, v_usb_policy, v_time_zone,v_auto_startup,v_is_stateless,v_dedicated_vm_for_vds,v_fail_back,v_vm_type,v_nice_level,v_default_boot_sequence,v_default_display_type,v_priority,v_iso_path,v_origin,v_initrd_url,v_kernel_url,v_kernel_params,v_migration_support,v_predefined_properties,v_userdefined_properties,v_min_allocated_mem,v_cpu_pinning,v_is_smartcard_enabled,v_is_delete_protected,v_host_cpu_flags, v_tunnel_migration, v_watchdog_model, v_watchdg_action); INSERT INTO vm_dynamic(vm_guid, status) VALUES(v_vm_guid, 0); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java index 8b90c6a..34f8316 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java @@ -499,6 +499,11 @@ { VmDeviceUtils.updateSmartcardDevice(getVm().getId(), getVm().isSmartcardEnabled()); } + //update watchdog device + VmDeviceUtils.updateWatchdogDevice(getVm().getId(), + getParameters().getVm().getWatchdogModel(), + getParameters().getVm().getWatchdogAction()); + setActionReturnValue(getVm().getId()); setSucceeded(true); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java index df21ed4..8b6f5b7 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java @@ -303,6 +303,8 @@ getParameters().getMasterVm().getTunnelMigration(), getParameters().getMasterVm().getVncKeyboardLayout())); getVmTemplate().setAutoStartup(getParameters().getMasterVm().isAutoStartup()); + getVmTemplate().setWatchdogAction(getParameters().getMasterVm().getWatchdogAction()); + getVmTemplate().setWatchdogModel(getParameters().getMasterVm().getWatchdogModel()); getVmTemplate().setPriority(getParameters().getMasterVm().getPriority()); getVmTemplate().setDefaultDisplayType(getParameters().getMasterVm().getDefaultDisplayType()); getVmTemplate().setInitrdUrl(getParameters().getMasterVm().getInitrdUrl()); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java index f3a6cd5..facd33a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java @@ -82,6 +82,37 @@ updateAudioDevice(oldVm, entity); updateSmartcardDevice(oldVm, entity); + updateWatchdogDevice(oldVm, entity); + } + } + + public static void updateWatchdogDevice(Guid vmId, String watchdogModel, String watchdogAction) { + // remove watchdogs + List<VmDevice> watchdogs = + dao.getVmDeviceByVmIdTypeAndDevice(vmId, + VmDeviceType.WATCHDOG.getName(), + VmDeviceType.WATCHDOG.getName()); + for (VmDevice watchDog : watchdogs) { + dao.remove(watchDog.getId()); + } + if (watchdogModel != null && watchdogAction != null) { + // add watchdog + HashMap<String, Object> params = new HashMap<String, Object>(); + params.put("model", watchdogModel); + params.put("action", watchdogAction); + addManagedDevice(new VmDeviceId(Guid.NewGuid(), vmId), + VmDeviceType.WATCHDOG, + VmDeviceType.WATCHDOG, + params, + true, + false); + } + } + + static void updateWatchdogDevice(VM oldVm, VmBase newVm) { + if (!StringUtils.equals(oldVm.getWatchdogAction(), newVm.getWatchdogAction()) + || !StringUtils.equals(oldVm.getWatchdogModel(), newVm.getWatchdogModel())) { + updateWatchdogDevice(newVm.getId(), newVm.getWatchdogModel(), newVm.getWatchdogAction()); } } @@ -233,6 +264,8 @@ specParams.put(VdsProperties.Model, VdsProperties.Virtio); } else if (VmDeviceType.SMARTCARD.getName().equals(device.getType())) { specParams = new SmartcardSpecParams(); + } else if (VmDeviceType.WATCHDOG.getName().equals(device.getType())) { + specParams.putAll(device.getSpecParams()); } device.setId(new VmDeviceId(id, dstId)); device.setSpecParams(specParams); diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java index e769c5b..632629f 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VM.java @@ -21,6 +21,22 @@ @Valid private VmStatic vmStatic; + public String getWatchdogAction() { + return vmStatic.getWatchdogAction(); + } + + public void setWatchdogAction(String watchdogAction) { + vmStatic.setWatchdogAction(watchdogAction); + } + + public String getWatchdogModel() { + return vmStatic.getWatchdogModel(); + } + + public void setWatchdogModel(String watchdogModel) { + vmStatic.setWatchdogModel(watchdogModel); + } + private VmDynamic vmDynamic; private VmStatistics vmStatistics; @EditableField @@ -1434,4 +1450,5 @@ public void setTunnelMigration(Boolean value) { vmStatic.setTunnelMigration(value); } + } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java index fdb9d33..0c6a73f 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmBase.java @@ -836,4 +836,25 @@ this.name = value; } + @EditableField + String watchdogAction = null; + @EditableField + String watchdogModel = null; + + public String getWatchdogAction() { + return watchdogAction; + } + + public void setWatchdogAction(String watchdogAction) { + this.watchdogAction = watchdogAction; + } + + public String getWatchdogModel() { + return watchdogModel; + } + + public void setWatchdogModel(String watchdogModel) { + this.watchdogModel = watchdogModel; + } + } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java index 324a727..2350f95 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java @@ -285,7 +285,9 @@ return (VmDeviceType.SOUND.getName().equals(type) || VmDeviceType.USB.getName().equals(device) || (VmDeviceType.SMARTCARD.getName().equals(device) && VmDeviceType.SMARTCARD.getName().equals(type)) || - (VmDeviceType.SPICEVMC.getName().equals(device) && VmDeviceType.REDIR.getName().equals(type)) || (VmDeviceType.MEMBALLOON.getName() - .equals(device) && VmDeviceType.BALLOON.getName().equals(type))); + (VmDeviceType.SPICEVMC.getName().equals(device) && VmDeviceType.REDIR.getName().equals(type)) + || (VmDeviceType.MEMBALLOON.getName() + .equals(device) && VmDeviceType.BALLOON.getName().equals(type)) || (VmDeviceType.WATCHDOG.getName() + .equals(device) && VmDeviceType.WATCHDOG.getName().equals(type))); } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceType.java index a466960..83e4239 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceType.java @@ -19,6 +19,7 @@ MEMBALLOON("memballoon"), SMARTCARD("smartcard"), BALLOON("balloon"), + WATCHDOG("watchdog"), OTHER("other", "0"), UNKNOWN("unknown", "-1"); diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java index 009a50e..41bcdc4 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java @@ -389,6 +389,8 @@ entity.setGuestAgentNicsHash(rs.getInt("guest_agent_nics_hash")); entity.setTunnelMigration((Boolean) rs.getObject("tunnel_migration")); entity.setVncKeyboardLayout(rs.getString("vnc_keyboard_layout")); + entity.setWatchdogModel(rs.getString("watchdog_model")); + entity.setWatchdogAction(rs.getString("watchdog_action")); return entity; } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java index de3c511..46c90c4 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java @@ -85,7 +85,9 @@ .addValue("cpu_pinning", vm.getCpuPinning()) .addValue("host_cpu_flags", vm.isUseHostCpuFlags()) .addValue("tunnel_migration", vm.getTunnelMigration()) - .addValue("vnc_keyboard_layout", vm.getVncKeyboardLayout()); + .addValue("vnc_keyboard_layout", vm.getVncKeyboardLayout()) + .addValue("watchdog_model", vm.getWatchdogModel()) + .addValue("watchdog_action", vm.getWatchdogAction()); } @Override @@ -203,6 +205,8 @@ entity.setUseHostCpuFlags(rs.getBoolean("host_cpu_flags")); entity.setTunnelMigration((Boolean) rs.getObject("tunnel_migration")); entity.setVncKeyboardLayout(rs.getString("vnc_keyboard_layout")); + entity.setWatchdogModel(rs.getString("watchdog_model")); + entity.setWatchdogAction(rs.getString("watchdog_action")); return entity; } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java index cd157a5..7924400 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmTemplateDAODbFacadeImpl.java @@ -166,7 +166,9 @@ .addValue("migration_support", template.getMigrationSupport().getValue()) .addValue("dedicated_vm_for_vds", template.getDedicatedVmForVds()) .addValue("tunnel_migration", template.getTunnelMigration()) - .addValue("vnc_keyboard_layout", template.getVncKeyboardLayout()); + .addValue("vnc_keyboard_layout", template.getVncKeyboardLayout()) + .addValue("watchdog_action", template.getWatchdogAction()) + .addValue("watchdog_model", template.getWatchdogModel()); } @Override diff --git a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd index 05237c0..cf3e314 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd +++ b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd @@ -1012,6 +1012,13 @@ </xs:attribute> </xs:complexType> + <xs:complexType name="WatchDogType"> + <xs:sequence> + <xs:element name="model" type="xs:string" minOccurs="1" maxOccurs="1"/> + <xs:element name="action" type="xs:string" minOccurs="1" maxOccurs="1"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="MemoryPolicy"> <xs:sequence> <xs:element name="guaranteed" type="xs:long" minOccurs="0" maxOccurs="1"/> @@ -1907,6 +1914,7 @@ <xs:element ref="domain" minOccurs="0" maxOccurs="1"/> <xs:element ref="usb" minOccurs="0" maxOccurs="1"/> <xs:element name="tunnel_migration" type="xs:boolean" minOccurs="0" maxOccurs="1"/> + <xs:element name="watchdog" type="WatchDogType" minOccurs="0" maxOccurs="1"/> <!-- also rel="cdroms/disks/nics" links, see Devices below --> </xs:sequence> </xs:extension> @@ -2129,6 +2137,7 @@ <!-- also rel="users" links, see Users above --> <xs:element ref="reported_devices" minOccurs="0" maxOccurs="1"/> + <xs:element name="watchdog" type="WatchDogType" minOccurs="0" maxOccurs="1"></xs:element> </xs:sequence> </xs:extension> </xs:complexContent> diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java index 859609e..4c7b306 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java @@ -42,6 +42,7 @@ import org.ovirt.engine.api.model.VmPool; import org.ovirt.engine.api.model.VmStatus; import org.ovirt.engine.api.model.VmType; +import org.ovirt.engine.api.model.WatchDogType; import org.ovirt.engine.api.restapi.utils.CustomPropertiesParser; import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.api.restapi.utils.UsbMapperUtils; @@ -429,6 +430,14 @@ model.setQuota(quota); } model.setTunnelMigration(entity.getTunnelMigration()); + + if(entity.getWatchdogModel() != null) { + WatchDogType watchdog = new WatchDogType(); + watchdog.setAction(entity.getWatchdogAction()); + watchdog.setModel(entity.getWatchdogModel()); + model.setWatchdog(watchdog); + } + return model; } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVDSCommand.java index 2003006..483315c 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVDSCommand.java @@ -70,6 +70,7 @@ builder.buildVmTimeZone(); builder.buildVmUsbDevices(); builder.buildVmMemoryBalloon(); + builder.buildVmWatchdog(); builder.buildUnmanagedDevices(); } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java index 6ba2926..86ae326 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java @@ -685,4 +685,23 @@ return model.equalsIgnoreCase(FIRST_MASTER_MODEL); } + protected void buildVmWatchdog() { + List<VmDevice> watchdogs = + DbFacade.getInstance() + .getVmDeviceDao() + .getVmDeviceByVmIdAndType(vm.getId(), + VmDeviceType.WATCHDOG.getName()); + for(VmDevice watchdog : watchdogs) { + XmlRpcStruct struct = new XmlRpcStruct(); + struct.add(VdsProperties.Type, watchdog.getType()); + struct.add(VdsProperties.Device, watchdog.getDevice()); + Map<String, Object> specParams = watchdog.getSpecParams(); + if (specParams == null) { + specParams = new HashMap<String, Object>(); + } + struct.add(VdsProperties.SpecParams, specParams); + addDevice(struct, watchdog, null); + } + } + } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java index aa46f3e..71d18b4 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java @@ -262,4 +262,6 @@ protected abstract void buildVmMemoryBalloon(); + protected abstract void buildVmWatchdog(); + } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java index 1c966bf..ffbfd44 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java @@ -8,6 +8,7 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.Predicate; +import org.apache.commons.lang.NotImplementedException; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.DiskImage; @@ -213,4 +214,9 @@ protected void buildVmMemoryBalloon() { // Not supported in old code } + + protected void buildVmWatchdog() { + throw new NotImplementedException("not implemented"); + // Not supported in old code + } } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java index baac7ef..c92c28d 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java @@ -394,6 +394,12 @@ @DefaultStringValue("Highly Available") String highlyAvailableVmPopup(); + @DefaultStringValue("Watchdog Action") + String watchdogAction(); + + @DefaultStringValue("Watchdog Model") + String watchdogModel(); + @DefaultStringValue("Template Provisioning") String templateProvisVmPopup(); @@ -433,6 +439,9 @@ @DefaultStringValue("Priority for Run/Migration queue:") String priorForRunMigrationQueueVmPopup(); + @DefaultStringValue("Watchdog") + String watchdog(); + @DefaultStringValue("Memory Allocation:") String memAllocVmPopup(); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java index 6c89a0f..9f1ccf9 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java @@ -345,6 +345,17 @@ @WithElementId("priority") public EntityModelCellTable<ListModel> priorityEditor; + @UiField(provided = true) + @Path(value = "watchdogModel.entity") + @WithElementId("watchdogModel") + public ListModelListBoxEditor<Object> watchdogModelEditor; + + @UiField(provided = true) + @Path(value = "watchdogAction.entity") + @WithElementId("watchdogAction") + public ListModelListBoxEditor<Object> watchdogActionEditor; + + // ==Resource Allocation Tab== @UiField protected DialogTab resourceAllocationTab; @@ -484,6 +495,8 @@ hostCpuEditor = new EntityModelCheckBoxEditor(Align.RIGHT); dontMigrateVMEditor = new EntityModelCheckBoxEditor(Align.RIGHT); isHighlyAvailableEditor = new EntityModelCheckBoxEditor(Align.RIGHT); + watchdogModelEditor = new ListModelListBoxEditor<Object>(); + watchdogActionEditor = new ListModelListBoxEditor<Object>(); isStatelessEditor = new EntityModelCheckBoxEditor(Align.RIGHT); isDeleteProtectedEditor = new EntityModelCheckBoxEditor(Align.RIGHT); isSmartcardEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT); @@ -736,6 +749,10 @@ // High Availability Tab isHighlyAvailableEditor.setLabel(constants.highlyAvailableVmPopup()); + + // watchdog + watchdogActionEditor.setLabel(constants.watchdogAction()); + watchdogModelEditor.setLabel(constants.watchdogModel()); // Resource Allocation Tab provisioningEditor.setLabel(constants.templateProvisVmPopup()); @@ -1112,6 +1129,9 @@ isHighlyAvailableEditor.setTabIndex(nextTabIndex++); priorityEditor.setTabIndex(nextTabIndex++); + watchdogModelEditor.setTabIndex(nextTabIndex++); + watchdogActionEditor.setTabIndex(nextTabIndex++); + // ==Resource Allocation Tab== nextTabIndex = resourceAllocationTab.setTabIndexes(nextTabIndex); minAllocatedMemoryEditor.setTabIndex(nextTabIndex++); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml index 6aef823..9a5a89d 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml @@ -353,6 +353,11 @@ <g:Label addStyleNames="{style.sectionLabel}" text="{constants.priorForRunMigrationQueueVmPopup}" /> <e:EntityModelCellTable ui:field="priorityEditor" /> </g:FlowPanel> + <g:FlowPanel addStyleNames="{style.sectionPanel}"> + <g:Label addStyleNames="{style.sectionLabel}" text="{constants.watchdog}" /> + <e:ListModelListBoxEditor ui:field="watchdogModelEditor" /> + <e:ListModelListBoxEditor ui:field="watchdogActionEditor" /> + </g:FlowPanel> </g:FlowPanel> </t:content> </t:DialogTab> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java index 6db6e58..23e15dd 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java @@ -94,6 +94,8 @@ // vm.ActualDiskWithSnapshotsSize = instance.ActualDiskWithSnapshotsSize; vm.setAppList(instance.getAppList()); vm.setAutoStartup(instance.isAutoStartup()); + vm.setWatchdogAction(instance.getWatchdogAction()); + vm.setWatchdogModel(instance.getWatchdogModel()); vm.setBootSequence(instance.getBootSequence()); vm.setClientIp(instance.getClientIp()); vm.setCpuPerSocket(instance.getCpuPerSocket()); @@ -360,6 +362,8 @@ obj.setDiskImageMap(instance.getDiskImageMap()); obj.setInterfaces(instance.getInterfaces()); obj.setAutoStartup(instance.isAutoStartup()); + obj.setWatchdogAction(instance.getWatchdogAction()); + obj.setWatchdogModel(instance.getWatchdogModel()); obj.setchild_count(instance.getchild_count()); obj.setCpuPerSocket(instance.getCpuPerSocket()); obj.setCreationDate(instance.getCreationDate()); @@ -399,6 +403,8 @@ obj.setIsoPath(instance.getIsoPath()); obj.setOrigin(instance.getOrigin()); obj.setAutoStartup(instance.isAutoStartup()); + obj.setWatchdogAction(instance.getWatchdogAction()); + obj.setWatchdogModel(instance.getWatchdogModel()); obj.setCpuPerSocket(instance.getCpuPerSocket()); obj.setCreationDate(instance.getCreationDate()); obj.setDedicatedVmForVds(instance.getDedicatedVmForVds()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java index e6053ab..8b86ee6 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java @@ -523,6 +523,8 @@ template.setDefaultBootSequence(model.getBootSequence()); template.setIsoPath(model.getCdImage().getIsChangable() ? (String) model.getCdImage().getSelectedItem() : ""); //$NON-NLS-1$ template.setAutoStartup((Boolean) model.getIsHighlyAvailable().getEntity()); + template.setWatchdogAction((String) model.getWatchdogAction().getEntity()); + template.setWatchdogModel((String) model.getWatchdogModel().getEntity()); template.setKernelUrl((String) model.getKernel_path().getEntity()); template.setKernelParams((String) model.getKernel_parameters().getEntity()); template.setInitrdUrl((String) model.getInitrd_path().getEntity()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java index 0f68e33..1c897d8 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java @@ -654,6 +654,8 @@ tempVar.setSmartcardEnabled((Boolean) model.getIsSmartcardEnabled().getEntity()); tempVar.setDefaultBootSequence(model.getBootSequence()); tempVar.setAutoStartup((Boolean) model.getIsHighlyAvailable().getEntity()); + tempVar.setWatchdogAction((String)model.getWatchdogAction().getEntity()); + tempVar.setWatchdogModel((String)model.getWatchdogModel().getEntity()); tempVar.setIsoPath(model.getCdImage().getIsChangable() ? (String) model.getCdImage().getSelectedItem() : ""); //$NON-NLS-1$ tempVar.setInitrdUrl(vm.getInitrdUrl()); tempVar.setKernelUrl(vm.getKernelUrl()); @@ -1348,6 +1350,8 @@ gettempVm().setIsoPath(model.getCdImage().getIsChangable() ? (String) model.getCdImage() .getSelectedItem() : ""); //$NON-NLS-1$ gettempVm().setAutoStartup((Boolean) model.getIsHighlyAvailable().getEntity()); + gettempVm().setWatchdogAction((String) model.getWatchdogAction().getEntity()); + gettempVm().setWatchdogModel((String) model.getWatchdogModel().getEntity()); gettempVm().setInitrdUrl((String) model.getInitrd_path().getEntity()); gettempVm().setKernelUrl((String) model.getKernel_path().getEntity()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java index 376f1a1..88a4ee61a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java @@ -123,6 +123,8 @@ getModel().getAllowConsoleReconnect().setEntity(vm.getAllowConsoleReconnect()); getModel().setBootSequence(vm.getDefaultBootSequence()); getModel().getIsHighlyAvailable().setEntity(vm.isAutoStartup()); + getModel().getWatchdogModel().setEntity(vm.getWatchdogModel()); + getModel().getWatchdogAction().setEntity(vm.getWatchdogAction()); getModel().getTotalCPUCores().setEntity(Integer.toString(vm.getNumOfCpus())); getModel().getTotalCPUCores().setIsChangable(!vm.isRunning()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java index e2ac6d6..eee21e9 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java @@ -94,6 +94,8 @@ getModel().getUsbPolicy().setSelectedItem(template.getUsbPolicy()); getModel().setBootSequence(template.getDefaultBootSequence()); getModel().getIsHighlyAvailable().setEntity(template.isAutoStartup()); + getModel().getWatchdogModel().setEntity(template.getWatchdogModel()); + getModel().getWatchdogAction().setEntity(template.getWatchdogAction()); updateHostPinning(template.getMigrationSupport()); doChangeDefautlHost(template.getDedicatedVmForVds()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java index f86d751..83322af 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java @@ -118,6 +118,8 @@ getModel().getUsbPolicy().setSelectedItem(vmBase.getUsbPolicy()); getModel().setBootSequence(vmBase.getDefaultBootSequence()); getModel().getIsHighlyAvailable().setEntity(vmBase.isAutoStartup()); + getModel().getWatchdogModel().setEntity(vmBase.getWatchdogModel()); + getModel().getWatchdogAction().setEntity(vmBase.getWatchdogAction()); getModel().getIsDeleteProtected().setEntity(vmBase.isDeleteProtected()); getModel().getIsSmartcardEnabled().setEntity(vmBase.isSmartcardEnabled()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java index d61767c..84094d2 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java @@ -144,6 +144,8 @@ getModel().getAllowConsoleReconnect().setEntity(this.template.isAllowConsoleReconnect()); getModel().setBootSequence(this.template.getDefaultBootSequence()); getModel().getIsHighlyAvailable().setEntity(this.template.isAutoStartup()); + getModel().getWatchdogAction().setEntity(this.template.getWatchdogAction()); + getModel().getWatchdogModel().setEntity(this.template.getWatchdogModel()); getModel().getTotalCPUCores().setEntity(Integer.toString(this.template.getNumOfCpus())); getModel().getNumOfSockets().setSelectedItem(this.template.getNumOfSockets()); getModel().getIsStateless().setEntity(this.template.isStateless()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java index f54d00e..7b66cec 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java @@ -1080,6 +1080,7 @@ getCdAttached().setEntity(false); setIsHighlyAvailable(new NotChangableForVmInPoolEntityModel()); + getIsHighlyAvailable().getEntityChangedEvent().addListener(this); setDontMigrateVM(new NotChangableForVmInPoolEntityModel()); setIsTemplatePublic(new NotChangableForVmInPoolEntityModel()); setKernel_parameters(new NotChangableForVmInPoolEntityModel()); @@ -1135,6 +1136,24 @@ setHostCpu(new NotChangableForVmInPoolEntityModel()); getHostCpu().getEntityChangedEvent().addListener(this); + + setWatchdogAction(new NotChangableForVmInPoolListModel()); + getWatchdogAction().getEntityChangedEvent().addListener(this); + ArrayList<String> watchDogActions = new ArrayList<String>(); + watchDogActions.add("none"); //$NON-NLS-1$ + watchDogActions.add("reset"); //$NON-NLS-1$ + watchDogActions.add("shutdown"); //$NON-NLS-1$ + watchDogActions.add("dump"); //$NON-NLS-1$ + watchDogActions.add("pause"); //$NON-NLS-1$ + getWatchdogAction().setItems(watchDogActions); + + setWatchdogModel(new NotChangableForVmInPoolListModel()); + getWatchdogModel().getEntityChangedEvent().addListener(this); + ArrayList<String> watchDogModels = new ArrayList<String>(); + watchDogModels.add(""); //$NON-NLS-1$ + watchDogModels.add("i6300esb"); //$NON-NLS-1$ + watchDogModels.add("ib700"); //$NON-NLS-1$ + getWatchdogModel().setItems(watchDogModels); setDontMigrateVM(new NotChangableForVmInPoolEntityModel()); getDontMigrateVM().getEntityChangedEvent().addListener(this); @@ -1228,6 +1247,7 @@ InitAllowConsoleReconnect(); InitMinimalVmMemSize(); InitMaximalVmMemSize32OS(); + InitWatchdog(); behavior.Initialize(SystemTreeSelectedItem); } @@ -1331,7 +1351,18 @@ if ((Boolean) getProvisioningClone_IsSelected().getEntity()) { getProvisioning().setEntity(true); } + } else if (sender == getWatchdogModel()) { + WatchdogModel_EntityChanged(sender, args); } + } + } + + private void WatchdogModel_EntityChanged(Object sender, EventArgs args) { + if("".equals(getWatchdogModel().getEntity())) { + getWatchdogAction().setIsChangable(false); + getWatchdogAction().setEntity(""); //$NON-NLS-1$ + } else { + getWatchdogAction().setIsChangable(true); } } @@ -2244,4 +2275,28 @@ super.setIsChangable(value); } } + + private ListModel watchdogModel; + public ListModel getWatchdogModel() { + return watchdogModel; + } + + public void setWatchdogModel(ListModel watchdogModel) { + this.watchdogModel = watchdogModel; + } + + private ListModel watchdogAction; + + public ListModel getWatchdogAction() { + return watchdogAction; + } + + public void setWatchdogAction(ListModel watchdogAction) { + this.watchdogAction = watchdogAction; + } + + private void InitWatchdog() { +//lofasz + } + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java index 1191e56..078eba2 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java @@ -1760,6 +1760,8 @@ model.getCommands().add(tempVar2); model.getIsHighlyAvailable().setEntity(vm.getStaticData().isAutoStartup()); + model.getWatchdogAction().setEntity(vm.getWatchdogAction()); + model.getWatchdogModel().setEntity(vm.getWatchdogModel()); } private void OnNewTemplate() @@ -1846,6 +1848,8 @@ tempVar.setDeleteProtected((Boolean) model.getIsDeleteProtected().getEntity()); tempVar.setDefaultBootSequence(model.getBootSequence()); tempVar.setAutoStartup((Boolean) model.getIsHighlyAvailable().getEntity()); + tempVar.setWatchdogAction((String)model.getWatchdogAction().getEntity()); + tempVar.setWatchdogModel((String)model.getWatchdogModel().getEntity()); tempVar.setIsoPath(model.getCdImage().getIsChangable() ? (String) model.getCdImage().getSelectedItem() : ""); //$NON-NLS-1$ tempVar.setUsbPolicy(vm.getUsbPolicy()); tempVar.setInitrdUrl(vm.getInitrdUrl()); @@ -2424,6 +2428,9 @@ : ""); //$NON-NLS-1$ getcurrentVm().setAutoStartup((Boolean) model.getIsHighlyAvailable().getEntity()); + getcurrentVm().setWatchdogAction((String) model.getWatchdogAction().getEntity()); + getcurrentVm().setWatchdogModel((String) model.getWatchdogModel().getEntity()); + getcurrentVm().setInitrdUrl((String) model.getInitrd_path().getEntity()); getcurrentVm().setKernelUrl((String) model.getKernel_path().getEntity()); getcurrentVm().setKernelParams((String) model.getKernel_parameters().getEntity()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java index 36d10a8..6153c77 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java @@ -579,6 +579,8 @@ getcurrentVm().setIsoPath(model.getCdImage().getIsChangable() ? (String) model.getCdImage().getSelectedItem() : ""); //$NON-NLS-1$ getcurrentVm().setAutoStartup((Boolean) model.getIsHighlyAvailable().getEntity()); + getcurrentVm().setWatchdogAction((String)model.getWatchdogAction().getEntity()); + getcurrentVm().setWatchdogModel((String)model.getWatchdogModel().getEntity()); getcurrentVm().setInitrdUrl((String) model.getInitrd_path().getEntity()); getcurrentVm().setKernelUrl((String) model.getKernel_path().getEntity()); getcurrentVm().setKernelParams((String) model.getKernel_parameters().getEntity()); -- To view, visit http://gerrit.ovirt.org/12419 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibe5c36995dafcef6b3ad45a9e0ca8b0471324b70 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Laszlo Hornyak <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
