Tomas Jelinek has uploaded a new change for review. Change subject: core: added is_run_once flag to vm_dynamic ......................................................................
core: added is_run_once flag to vm_dynamic The only way how to set this property is using the VmDAO.saveIsRunOnce method. The reason is to avoid the VdsUpdateRunTimeInfo to replace this field. Change-Id: I25acdbcc84d326c694d7ae5ff1facaf13e5d683e Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=987985 Signed-off-by: Tomas Jelinek <tjeli...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmOnceCommand.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/VmDynamic.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.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/VmDynamicDAODbFacadeImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java M packaging/dbscripts/create_views.sql M packaging/dbscripts/vms_sp.sql 11 files changed, 64 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/81/17481/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java index e2e7c7b..5e5d115 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java @@ -485,6 +485,7 @@ */ protected CreateVmVDSCommandParameters initCreateVmParams() { VM vmToBeCreated = getVm(); + vmToBeCreated.setRunOnce(false); if (!vmToBeCreated.getInterfaces().isEmpty()) { initParametersForExternalNetworks(); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmOnceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmOnceCommand.java index 3bf0c05..4b68302 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmOnceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmOnceCommand.java @@ -58,8 +58,9 @@ @Override protected CreateVmVDSCommandParameters initCreateVmParams() { - getVm().setRunOnce(true); CreateVmVDSCommandParameters createVmParams = super.initCreateVmParams(); + + getVm().setRunOnce(true); RunVmOnceParams runOnceParams = getParameters(); SysPrepParams sysPrepParams = new SysPrepParams(); 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 a99559e..7ca5ba8 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 @@ -1425,11 +1425,11 @@ } public void setRunOnce(boolean value) { - runOnce = value; + vmDynamic.setRunOnce(value); } public boolean isRunOnce() { - return runOnce; + return vmDynamic.isRunOnce(); } public void setVmPayload(VmPayload vmPayload) { diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java index 627e8f9..0872481 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java @@ -47,6 +47,7 @@ private boolean win2kHackEnabled = false; private Long lastWatchdogEvent = null; private String lastWatchdogAction = null; + private boolean runOnce; @Override public int hashCode() { @@ -87,6 +88,7 @@ result = prime * result + ((vmPid == null) ? 0 : vmPid.hashCode()); result = prime * result + (lastWatchdogEvent == null ? 0 : lastWatchdogEvent.hashCode()); result = prime * result + (lastWatchdogAction == null ? 0 : lastWatchdogAction.hashCode()); + result = prime * result + (runOnce ? 1231 : 1237); return result; } @@ -136,7 +138,8 @@ && ObjectUtils.objectsEqual(lastStartTime, other.lastStartTime) && ObjectUtils.objectsEqual(vmPid, other.vmPid) && ObjectUtils.objectsEqual(lastWatchdogEvent, other.lastWatchdogEvent) - && ObjectUtils.objectsEqual(lastWatchdogAction, other.lastWatchdogAction)); + && ObjectUtils.objectsEqual(lastWatchdogAction, other.lastWatchdogAction) + && runOnce == other.runOnce); } public String getExitMessage() { @@ -452,4 +455,11 @@ this.lastWatchdogAction = lastWatchdogAction; } + public boolean isRunOnce() { + return runOnce; + } + + public void setRunOnce(boolean runOnce) { + this.runOnce = runOnce; + } } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java index 8112556..bc089af 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java @@ -217,6 +217,17 @@ * Whether or not the VM is initialized. */ void saveIsInitialized(Guid vmid, boolean isInitialized); + + /** + * Saves the is_run_once property of the VM. + * + * @param vmid + * The VM's ID + * @param isRunOnce + * Whether or not the VM is running in run once. + */ + void saveIsRunOnce(Guid vmid, boolean isRunOnce); + /** * Removes the VM with the specified id. * 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 18cc051..31b6d1d 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 @@ -250,6 +250,14 @@ } @Override + public void saveIsRunOnce(Guid vmid, boolean isRunOnce) { + getCallsHandler().executeModification("UpdateIsRunOnce", + getCustomMapSqlParameterSource() + .addValue("vm_guid", vmid) + .addValue("is_run_once", isRunOnce)); + } + + @Override public void remove(Guid id) { getCallsHandler().executeModification("DeleteVm", getCustomMapSqlParameterSource() .addValue("vm_guid", id)); @@ -403,6 +411,7 @@ entity.setRunAndPause(rs.getBoolean("is_run_and_pause")); entity.setLastWatchdogEvent(getLong(rs, "last_watchdog_event")); entity.setTrustedService(rs.getBoolean("trusted_service")); + entity.setRunOnce(rs.getBoolean("is_run_once")); entity.setCreatedByUserId(getGuid(rs,"created_by_user_id")); return entity; } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAODbFacadeImpl.java index 36a17bb..9e2900c 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDynamicDAODbFacadeImpl.java @@ -168,6 +168,7 @@ entity.setGuestAgentNicsHash(rs.getInt("guest_agent_nics_hash")); entity.setLastWatchdogEvent(getLong(rs, "last_watchdog_event")); entity.setLastWatchdogAction(rs.getString("last_watchdog_action")); + entity.setRunOnce(rs.getBoolean("is_run_once")); return entity; } }; diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java index 8caf43f..8e84c0d 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java @@ -430,4 +430,18 @@ updatedVm = dao.get(vmId); assertEquals("VM's is_initiazlied was not updated", origInitialized, updatedVm.isInitialized()); } + + @Test + public void testSaveIsRunOnce() { + Guid vmId = existingVm.getId(); + boolean origIsRunOnce = existingVm.isRunOnce(); + + dao.saveIsRunOnce(vmId, !origIsRunOnce); + VM updatedVm = dao.get(vmId); + assertEquals("VM's is_run_once was not updated", !origIsRunOnce, updatedVm.isRunOnce()); + + dao.saveIsRunOnce(vmId, origIsRunOnce); + updatedVm = dao.get(vmId); + assertEquals("VM's is_run_once was not updated", origIsRunOnce, updatedVm.isRunOnce()); + } } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java index ad34177..320d9f8 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/CreateVmVDSCommand.java @@ -43,6 +43,7 @@ if (command.getVDSReturnValue().getSucceeded()) { vm.setInitialized(true); saveSetInitializedToDb(vm.getId()); + DbFacade.getInstance().getVmDao().saveIsRunOnce(vm.getId(), vm.isRunOnce()); TransactionSupport.executeInScope(TransactionScopeOption.Required, new TransactionMethod<Object>() { diff --git a/packaging/dbscripts/create_views.sql b/packaging/dbscripts/create_views.sql index bcb295a..94e762d 100644 --- a/packaging/dbscripts/create_views.sql +++ b/packaging/dbscripts/create_views.sql @@ -563,7 +563,7 @@ 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.is_run_and_pause as is_run_and_pause, vm_static.created_by_user_id as created_by_user_id, - vm_dynamic.last_watchdog_event as last_watchdog_event, vm_dynamic.last_watchdog_action as last_watchdog_action + vm_dynamic.last_watchdog_event as last_watchdog_event, vm_dynamic.last_watchdog_action as last_watchdog_action, vm_dynamic.is_run_once as is_run_once 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/packaging/dbscripts/vms_sp.sql b/packaging/dbscripts/vms_sp.sql index aedca76..9a19c5e 100644 --- a/packaging/dbscripts/vms_sp.sql +++ b/packaging/dbscripts/vms_sp.sql @@ -1080,6 +1080,17 @@ END; $procedure$ LANGUAGE plpgsql; +Create or replace FUNCTION UpdateIsRunOnce(v_vm_guid UUID, + v_is_run_once BOOLEAN) +RETURNS VOID + + AS $procedure$ +BEGIN + UPDATE vm_dynamic + SET is_run_once = v_is_run_once + WHERE vm_guid = v_vm_guid; +END; $procedure$ +LANGUAGE plpgsql; -- To view, visit http://gerrit.ovirt.org/17481 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I25acdbcc84d326c694d7ae5ff1facaf13e5d683e Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tomas Jelinek <tjeli...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches