Tomas Jelinek has uploaded a new change for review. Change subject: core: add support to have more than one instance image ......................................................................
core: add support to have more than one instance image WIP Change-Id: I00582d1c76bd3c30a0956047edf7e2cbb31ff3cb Signed-off-by: Tomas Jelinek <tjeli...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmManagementParametersBase.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/VmStatic.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ImageTypeUtils.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java M backend/manager/modules/dal/src/test/resources/fixtures.xml M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmReader.java M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmWriter.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/VmSpecificUnitToVmBuilder.java M frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmListModelTest.java M packaging/dbscripts/create_views.sql A packaging/dbscripts/upgrade/03_06_0340_add_vm_static_vm_images.sql M packaging/dbscripts/vms_sp.sql 14 files changed, 90 insertions(+), 86 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/84/32284/1 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 fa5c2cb..fc37654 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 @@ -1,6 +1,7 @@ package org.ovirt.engine.core.bll; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -73,6 +74,7 @@ import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.common.locks.LockingGroup; import org.ovirt.engine.core.common.osinfo.OsRepository; +import org.ovirt.engine.core.common.utils.ImageTypeUtils; import org.ovirt.engine.core.common.utils.Pair; import org.ovirt.engine.core.common.utils.SimpleDependecyInjector; import org.ovirt.engine.core.common.utils.VmDeviceType; @@ -97,14 +99,16 @@ public class AddVmCommand<T extends VmManagementParametersBase> extends VmManagementCommandBase<T> implements QuotaStorageDependent, QuotaVdsDependent { + private ImageTypeUtils imageTypeUtils = new ImageTypeUtils(); + protected HashMap<Guid, DiskImage> diskInfoDestinationMap; protected Map<Guid, StorageDomain> destStorages = new HashMap<Guid, StorageDomain>(); protected Map<Guid, List<DiskImage>> storageToDisksMap; private String cachedDiskSharedLockMessage; protected Guid instanceTypeId; protected InstanceType instanceType; - protected Guid imageTypeId; - protected ImageType imageType; + protected List<Guid> imageTypeId; + protected List<ImageType> imageType; private Guid vmInterfacesSourceId; protected List<VmTemplate> vmDisksSources = new ArrayList<>(); private Guid vmDevicesSourceId; @@ -161,7 +165,7 @@ instanceTypeId = parameters.getVmStaticData().getInstanceTypeId(); vmDevicesSourceId = (instanceTypeId != null) ? instanceTypeId : parameters.getVmStaticData().getVmtGuid(); - imageTypeId = parameters.getVmStaticData().getImageTypeId(); + imageTypeId = parameters.getImageTypeIds(); vmInterfacesSourceId = parameters.getVmStaticData().getVmtGuid(); vmDisksSources.add(getVmTemplate()); } @@ -219,9 +223,10 @@ return instanceType; } - protected ImageType getImageType() { + protected List<ImageType> getImageTypes() { if (imageType == null && imageTypeId != null) { - imageType = getVmTemplateDAO().getImageType(imageTypeId); + imageType = imageTypeUtils.getImagesByIds(imageTypeId); +// imageType = getVmTemplateDAO().getImageType(imageTypeId); } return imageType; } @@ -296,7 +301,7 @@ // check that template image and vm are on the same storage pool if (shouldCheckSpaceInStorageDomains()) { for (Guid storagePoolId : getStoragePoolIdFromSourceImageContainer()) { - if (!getStoragePoolId().equals(storagePoolId)) { + if (!getStoragePoolId().equals(storagePoolId) && !VmTemplateHandler.BLANK_VM_TEMPLATE_ID.equals(getVmTemplateId())) { reasons.add(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_POOL_NOT_MATCH.toString()); return false; } @@ -466,10 +471,6 @@ return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_TEMPLATE_IS_DISABLED); } - if (!isTemplateInValidDc()) { - return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_TEMPLATE_NOT_EXISTS_IN_CURRENT_DC); - } - // A VM cannot be added in a cluster without a defined architecture if (getVdsGroup().getArchitecture() == ArchitectureType.undefined) { return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_CLUSTER_UNDEFINED_ARCHITECTURE); @@ -569,7 +570,7 @@ return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_INSTANCE_TYPE_DOES_NOT_EXIST); } - if (imageTypeId != null && getImageType() == null) { + if (imageTypeId != null && getImageTypes() == null) { // invalid image type return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_IMAGE_TYPE_DOES_NOT_EXIST); } @@ -1123,7 +1124,7 @@ @Override protected boolean checkPermissions(final List<PermissionSubject> permSubjects) { - if (instanceTypeId != null && !checkInstanceTypeImagePermissions(instanceTypeId)) { + if (instanceTypeId != null && !checkInstanceTypeImagePermissions(Arrays.asList(instanceTypeId))) { return false; } @@ -1154,18 +1155,20 @@ * If using an instance type/image the user needs to have either CREATE_INSTANCE or the specific * getActionType().getActionGroup() on the instance type/image */ - private boolean checkInstanceTypeImagePermissions(Guid id) { + private boolean checkInstanceTypeImagePermissions(List<Guid> ids) { Collection<String> createInstanceMessages = new ArrayList<>(); Collection<String> actionGroupMessages = new ArrayList<>(); - PermissionSubject createInstanceSubject = new PermissionSubject(id, VdcObjectType.VmTemplate, ActionGroup.CREATE_INSTANCE); - PermissionSubject actionGroupSubject = new PermissionSubject(id, VdcObjectType.VmTemplate, getActionType().getActionGroup()); + for (Guid id : ids) { + PermissionSubject createInstanceSubject = new PermissionSubject(id, VdcObjectType.VmTemplate, ActionGroup.CREATE_INSTANCE); + PermissionSubject actionGroupSubject = new PermissionSubject(id, VdcObjectType.VmTemplate, getActionType().getActionGroup()); - // it is enough if at least one of this two permissions are there - if (!checkSinglePermission(createInstanceSubject, createInstanceMessages) && - !checkSinglePermission(actionGroupSubject, actionGroupMessages)) { - getReturnValue().getCanDoActionMessages().addAll(actionGroupMessages); - return false; + // it is enough if at least one of this two permissions are there + if (!checkSinglePermission(createInstanceSubject, createInstanceMessages) && + !checkSinglePermission(actionGroupSubject, actionGroupMessages)) { + getReturnValue().getCanDoActionMessages().addAll(actionGroupMessages); + return false; + } } return true; @@ -1359,7 +1362,14 @@ vmInterfacesSourceId = instanceType.getId(); } - ImageType imageType = getImageType(); + ImageType imageType = null; + if (getImageTypes() != null) { + for (ImageType image : getImageTypes()) { + // TODO is OS image? + imageType = image; + } + } + if (imageType != null) { vmStatic.setOsId(imageType.getOsId()); vmStatic.setIsoPath(imageType.getIsoPath()); @@ -1390,11 +1400,6 @@ getParameters().getVmStaticData().setDefaultDisplayType(defaultDisplayType); } - } - - protected boolean isTemplateInValidDc() { - return VmTemplateHandler.BLANK_VM_TEMPLATE_ID.equals(getVmTemplateId()) - || getVmTemplate().getStoragePoolId().equals(getStoragePoolId()); } protected void updateProfileOnNic(VmNic iface) { diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmManagementParametersBase.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmManagementParametersBase.java index 0638339..1e67e77 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmManagementParametersBase.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmManagementParametersBase.java @@ -1,6 +1,7 @@ package org.ovirt.engine.core.common.action; import java.util.HashMap; +import java.util.List; import javax.validation.Valid; @@ -32,6 +33,7 @@ private VmRngDevice rngDevice; private boolean copyTemplatePermissions; private boolean applyChangesLater; + private List<Guid> imageTypeIds; /* * This parameter is needed at update to make sure that when we get a null watchdog from rest-api it is not meant to @@ -239,4 +241,12 @@ public void setApplyChangesLater(boolean applyChangesLater) { this.applyChangesLater = applyChangesLater; } + + public List<Guid> getImageTypeIds() { + return imageTypeIds; + } + + public void setImageTypeIds(List<Guid> imageTypeIds) { + this.imageTypeIds = imageTypeIds; + } } 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 8f3694c..f4fec6f 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 @@ -1710,14 +1710,6 @@ vmStatic.setInstanceTypeId(instanceTypeId); } - public Guid getImageTypeId() { - return vmStatic.getImageTypeId(); - } - - public void setImageTypeId(Guid ImageTypeId) { - vmStatic.setImageTypeId(ImageTypeId); - } - public String getOriginalTemplateName() { return vmStatic.getOriginalTemplateName(); } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java index 9ac86ba..cfeac64 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java @@ -53,7 +53,6 @@ @EditableField private Guid instanceTypeId; - private Guid imageTypeId; @EditableField private boolean useLatestVersion; @@ -174,7 +173,6 @@ result = prime * result + ((vmtGuid == null) ? 0 : vmtGuid.hashCode()); result = prime * result + (useHostCpuFlags ? 1231 : 1237); result = prime * result + ((instanceTypeId == null) ? 0 : instanceTypeId.hashCode()); - result = prime * result + ((imageTypeId == null) ? 0 : imageTypeId.hashCode()); result = prime * result + ((originalTemplateGuid == null) ? 0 : originalTemplateGuid.hashCode()); result = prime * result + ((originalTemplateName == null) ? 0 : originalTemplateName.hashCode()); result = prime * result + (useLatestVersion ? 1249 : 1259); @@ -204,7 +202,6 @@ && ObjectUtils.objectsEqual(vmtGuid, other.vmtGuid) && useHostCpuFlags == other.useHostCpuFlags && ObjectUtils.objectsEqual(instanceTypeId, other.instanceTypeId) - && ObjectUtils.objectsEqual(imageTypeId, other.imageTypeId) && ObjectUtils.objectsEqual(originalTemplateGuid, other.originalTemplateGuid) && ObjectUtils.objectsEqual(originalTemplateName, other.originalTemplateName) && useLatestVersion == other.useLatestVersion @@ -235,14 +232,6 @@ public void setInstanceTypeId(Guid instanceTypeId) { this.instanceTypeId = instanceTypeId; - } - - public Guid getImageTypeId() { - return imageTypeId; - } - - public void setImageTypeId(Guid imageTypeId) { - this.imageTypeId = imageTypeId; } public String getOriginalTemplateName() { diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ImageTypeUtils.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ImageTypeUtils.java new file mode 100644 index 0000000..135051e --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/ImageTypeUtils.java @@ -0,0 +1,19 @@ +package org.ovirt.engine.core.common.utils; + +import org.ovirt.engine.core.common.businessentities.ImageType; +import org.ovirt.engine.core.compat.Guid; + +import java.util.ArrayList; +import java.util.List; + +public class ImageTypeUtils { + + public List<Guid> getImagesByVmId() { + return new ArrayList<Guid>(); + } + + public List<ImageType> getImagesByIds(List<Guid> ids) { + return new ArrayList<ImageType>(); + } + +} 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 4011b2f..c244775 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 @@ -39,7 +39,6 @@ .addValue("cpu_pinning", vm.getCpuPinning()) .addValue("host_cpu_flags", vm.isUseHostCpuFlags()) .addValue("instance_type_id", vm.getInstanceTypeId()) - .addValue("image_type_id", vm.getImageTypeId()) .addValue("original_template_name", vm.getOriginalTemplateName()) .addValue("original_template_id", vm.getOriginalTemplateGuid()) .addValue("template_version_number", vm.isUseLatestVersion() ? @@ -184,7 +183,6 @@ entity.setCpuPinning(rs.getString("cpu_pinning")); entity.setUseHostCpuFlags(rs.getBoolean("host_cpu_flags")); entity.setInstanceTypeId(Guid.createGuidFromString(rs.getString("instance_type_id"))); - entity.setImageTypeId(Guid.createGuidFromString(rs.getString("image_type_id"))); entity.setOriginalTemplateName(rs.getString("original_template_name")); entity.setOriginalTemplateGuid(getGuid(rs, "original_template_id")); // if template_version_number is null it means use latest version diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml b/backend/manager/modules/dal/src/test/resources/fixtures.xml index b2e1360..fe40d5f 100644 --- a/backend/manager/modules/dal/src/test/resources/fixtures.xml +++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml @@ -1936,7 +1936,6 @@ <column>is_run_and_pause</column> <column>created_by_user_id</column> <column>instance_type_id</column> - <column>image_type_id</column> <column>sso_method</column> <column>original_template_id</column> <column>original_template_name</column> @@ -1994,7 +1993,6 @@ <null /> <value>256</value> <value>false</value> - <null /> <null /> <null /> <value>guest_agent</value> @@ -2056,7 +2054,6 @@ <value>false</value> <null /> <null /> - <null /> <value>none</value> <null /> <null /> @@ -2114,7 +2111,6 @@ <value>true</value> <value>256</value> <value>false</value> - <null /> <null /> <null /> <value>guest_agent</value> @@ -2176,7 +2172,6 @@ <value>false</value> <null /> <null /> - <null /> <value>none</value> <null /> <null /> @@ -2234,7 +2229,6 @@ <null /> <value>256</value> <value>false</value> - <null /> <null /> <null /> <value>guest_agent</value> @@ -2296,7 +2290,6 @@ <value>false</value> <null /> <null /> - <null /> <value>none</value> <null /> <null /> @@ -2356,7 +2349,6 @@ <value>false</value> <null /> <null /> - <null /> <value>none</value> <null /> <null /> @@ -2414,7 +2406,6 @@ <value>false</value> <value>256</value> <value>false</value> - <null /> <null /> <null /> <value>none</value> @@ -2478,7 +2469,6 @@ <value>false</value> <null /> <value>99408929-82cf-4dc7-a532-9d998063fa95</value> - <null /> <value>none</value> <value>1b85420c-b84c-4f29-997e-0eb674b40b82</value> <value>someTemplateName</value> @@ -2536,7 +2526,6 @@ <value>false</value> <value>256</value> <value>false</value> - <null /> <null /> <null /> <value>none</value> @@ -2598,7 +2587,6 @@ <value>false</value> <null /> <null /> - <null /> <value>guest_agent</value> <value>1b85420c-b84c-4f29-997e-0eb674b40b82</value> <value>someTemplateName</value> @@ -2656,7 +2644,6 @@ <null /> <value>256</value> <value>false</value> - <null /> <null /> <null /> <value>none</value> @@ -2718,7 +2705,6 @@ <value>false</value> <null /> <null /> - <null /> <value>none</value> <value>1b85420c-b84c-4f29-997e-0eb674b40b81</value> <value>otherTemplateName</value> @@ -2776,7 +2762,6 @@ <null /> <value>256</value> <value>false</value> - <null /> <null /> <null /> <value>guest_agent</value> @@ -2838,7 +2823,6 @@ <value>false</value> <null /> <null /> - <null /> <value>guest_agent</value> <null /> <null /> @@ -2898,7 +2882,6 @@ <value>false</value> <null /> <null /> - <null /> <value>guest_agent</value> <null /> <null /> @@ -2956,7 +2939,6 @@ <null /> <value>256</value> <value>false</value> - <null /> <null /> <null /> <value>guest_agent</value> diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmReader.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmReader.java index 76726d2..565bc3a 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmReader.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmReader.java @@ -133,12 +133,12 @@ _vm.setInstanceTypeId(new Guid(node.innerText)); } } - node = content.SelectSingleNode(OvfProperties.IMAGE_TYPE_ID); - if (node != null) { - if (StringUtils.isNotEmpty(node.innerText)) { - _vm.setImageTypeId(new Guid(node.innerText)); - } - } +// node = content.SelectSingleNode(OvfProperties.IMAGE_TYPE_ID); +// if (node != null) { +// if (StringUtils.isNotEmpty(node.innerText)) { +// _vm.setImageTypeId(new Guid(node.innerText)); +// } +// } node = content.SelectSingleNode(OvfProperties.IS_INITIALIZED); if (node != null) { _vm.getStaticData().setInitialized(Boolean.parseBoolean(node.innerText)); diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmWriter.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmWriter.java index 97bd737..865ba42 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmWriter.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/ovf/OvfVmWriter.java @@ -46,11 +46,11 @@ _writer.WriteRaw(_vm.getInstanceTypeId().toString()); _writer.WriteEndElement(); } - if (_vm.getImageTypeId() != null ) { - _writer.WriteStartElement(OvfProperties.IMAGE_TYPE_ID); - _writer.WriteRaw(_vm.getImageTypeId().toString()); - _writer.WriteEndElement(); - } +// if (_vm.getImageTypeId() != null ) { +// _writer.WriteStartElement(OvfProperties.IMAGE_TYPE_ID); +// _writer.WriteRaw(_vm.getImageTypeId().toString()); +// _writer.WriteEndElement(); +// } _writer.WriteStartElement(OvfProperties.IS_INITIALIZED); _writer.WriteRaw(String.valueOf(_vm.getStaticData().isInitialized())); _writer.WriteEndElement(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/VmSpecificUnitToVmBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/VmSpecificUnitToVmBuilder.java index 290ae2e..7cb948c 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/VmSpecificUnitToVmBuilder.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/VmSpecificUnitToVmBuilder.java @@ -1,7 +1,6 @@ package org.ovirt.engine.ui.uicommonweb.builders.vm; import org.ovirt.engine.core.common.businessentities.VM; -import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.ui.uicommonweb.builders.BaseSyncBuilder; import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel; @@ -13,7 +12,7 @@ @Override protected void build(UnitVmModel model, VM vm) { vm.setVmtGuid(model.getTemplate().getSelectedItem().getId()); - vm.setImageTypeId(model.getInstanceImage().getSelectedItem().getId().equals(Guid.Empty) ? null : model.getInstanceImage().getSelectedItem().getId()); +// vm.setImageTypeId(model.getInstanceImage().getSelectedItem().getId().equals(Guid.Empty) ? null : model.getInstanceImage().getSelectedItem().getId()); vm.setCustomProperties(model.getCustomPropertySheet().serialize()); vm.setInstanceTypeId(model.getInstanceTypes().getSelectedItem().getId()); } diff --git a/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmListModelTest.java b/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmListModelTest.java index 36ec5a9..ccc9cf2 100644 --- a/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmListModelTest.java +++ b/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmListModelTest.java @@ -178,7 +178,7 @@ assertEquals(TEMPLATE_GUID, vm.getVmtGuid()); assertEquals(CUSTOM_PROPERTIES, vm.getCustomProperties()); assertEquals(INSTANCE_TYPE_ID, vm.getInstanceTypeId()); - assertEquals(INSTANCE_IMAGE_ID, vm.getImageTypeId()); +// assertEquals(INSTANCE_IMAGE_ID, vm.getImageTypeId()); } protected void verifyBuiltOrigVm(VM origVm, VM vm) { diff --git a/packaging/dbscripts/create_views.sql b/packaging/dbscripts/create_views.sql index d804a0c..656a4be 100644 --- a/packaging/dbscripts/create_views.sql +++ b/packaging/dbscripts/create_views.sql @@ -658,7 +658,7 @@ 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.is_run_once as is_run_once, vm_dynamic.vm_fqdn as vm_fqdn, vm_dynamic.cpu_name as cpu_name, vm_dynamic.current_cd as current_cd, vm_dynamic.reason as reason, vm_dynamic.exit_reason as exit_reason, - vm_static.instance_type_id as instance_type_id, vm_static.image_type_id as image_type_id, vds_groups.architecture as architecture, vm_static.original_template_id as original_template_id, vm_static.original_template_name as original_template_name, vm_dynamic.last_stop_time as last_stop_time, + vm_static.instance_type_id as instance_type_id, vds_groups.architecture as architecture, vm_static.original_template_id as original_template_id, vm_static.original_template_name as original_template_name, vm_dynamic.last_stop_time as last_stop_time, vm_static.migration_downtime as migration_downtime, vm_static.template_version_number as template_version_number, vm_static.serial_number_policy as serial_number_policy, vm_static.custom_serial_number as custom_serial_number, vm_static.is_boot_menu_enabled as is_boot_menu_enabled, vm_dynamic.guest_cpu_count as guest_cpu_count, @@ -705,7 +705,7 @@ vms.quota_id as quota_id, vms.quota_name as quota_name, vms.tunnel_migration as tunnel_migration, vms.vnc_keyboard_layout as vnc_keyboard_layout, vms.is_run_and_pause as is_run_and_pause, vms.created_by_user_id as created_by_user_id, vms.vm_fqdn, vms.cpu_name as cpu_name, vms.vm_pool_spice_proxy as vm_pool_spice_proxy, vms.vds_group_spice_proxy as vds_group_spice_proxy, - vms.instance_type_id as instance_type_id, vms.image_type_id as image_type_id, vms.architecture as architecture, vms.original_template_id as original_template_id, vms.original_template_name as original_template_name, + vms.instance_type_id as instance_type_id, vms.architecture as architecture, vms.original_template_id as original_template_id, vms.original_template_name as original_template_name, vms.migration_downtime as migration_downtime, vms.template_version_number as template_version_number, vms.current_cd as current_cd, vms.reason as reason, vms.serial_number_policy as serial_number_policy, vms.custom_serial_number as custom_serial_number, vms.exit_reason as exit_reason, diff --git a/packaging/dbscripts/upgrade/03_06_0340_add_vm_static_vm_images.sql b/packaging/dbscripts/upgrade/03_06_0340_add_vm_static_vm_images.sql new file mode 100644 index 0000000..f590553 --- /dev/null +++ b/packaging/dbscripts/upgrade/03_06_0340_add_vm_static_vm_images.sql @@ -0,0 +1,12 @@ +create table vm_static_vm_image +( + id UUID PRIMARY KEY, + vm_id UUID, + image_id UUID + + FOREIGN KEY (vm_id) REFERENCES vm_static(vm_guid) ON DELETE CASCADE, + FOREIGN KEY (image_id) REFERENCES vm_static(vm_guid) ON DELETE CASCADE + +) + +SELECT fn_db_drop_column('vm_static', 'image_type_id'); diff --git a/packaging/dbscripts/vms_sp.sql b/packaging/dbscripts/vms_sp.sql index 9892e54..e5b1ecd 100644 --- a/packaging/dbscripts/vms_sp.sql +++ b/packaging/dbscripts/vms_sp.sql @@ -499,7 +499,6 @@ v_is_run_and_pause BOOLEAN, v_created_by_user_id UUID, v_instance_type_id UUID, - v_image_type_id UUID, v_original_template_id UUID, v_original_template_name VARCHAR(255), v_migration_downtime INTEGER, @@ -518,8 +517,8 @@ BEGIN -- lock template for child count update select vm_guid into v_val FROM vm_static WHERE vm_guid = v_vmt_guid for update; -INSERT INTO vm_static(description, free_text_comment, mem_size_mb, os, vds_group_id, vm_guid, VM_NAME, vmt_guid,creation_date,num_of_monitors, single_qxl_pci, allow_console_reconnect,is_initialized,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, cpu_shares, 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, sso_method, host_cpu_flags, tunnel_migration, vnc_keyboard_layout, is_run_and_pause, created_by_user_id, instance_type_id, image_type_id, original_template_id, original_template_name, migration_downtime, template_version_number, serial_number_policy, custom_serial_number, is_boot_menu_enabled, numatune_mode, is_spice_file_transfer_enabled, is_spice_copy_paste_enabled, cpu_profi! le_id) - VALUES(v_description, v_free_text_comment, v_mem_size_mb, v_os, v_vds_group_id, v_vm_guid, v_vm_name, v_vmt_guid, v_creation_date, v_num_of_monitors,v_single_qxl_pci, v_allow_console_reconnect, v_is_initialized, 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_cpu_shares, 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_sso_method, v_host_cpu_flags, v_tunnel_migration, v_vnc_keyboard_layout, v_is_run_and_pause, v_created_by_user_id, v_instance_type_id, v_image_type_id, v_original_template_id, v_original_template_name, v_migration_downtime, v_template_version_number, v_serial_number_policy, v_custom_serial_number, v_is_boot_menu_! enabled, v_numatune_mode, v_is_spice_file_transfer_enabled, v_is_spice_copy_paste_enabled, v_cpu_profile_id); +INSERT INTO vm_static(description, free_text_comment, mem_size_mb, os, vds_group_id, vm_guid, VM_NAME, vmt_guid,creation_date,num_of_monitors, single_qxl_pci, allow_console_reconnect,is_initialized,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, cpu_shares, 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, sso_method, host_cpu_flags, tunnel_migration, vnc_keyboard_layout, is_run_and_pause, created_by_user_id, instance_type_id, original_template_id, original_template_name, migration_downtime, template_version_number, serial_number_policy, custom_serial_number, is_boot_menu_enabled, numatune_mode, is_spice_file_transfer_enabled, is_spice_copy_paste_enabled, cpu_profile_id) + VALUES(v_description, v_free_text_comment, v_mem_size_mb, v_os, v_vds_group_id, v_vm_guid, v_vm_name, v_vmt_guid, v_creation_date, v_num_of_monitors,v_single_qxl_pci, v_allow_console_reconnect, v_is_initialized, 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_cpu_shares, 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_sso_method, v_host_cpu_flags, v_tunnel_migration, v_vnc_keyboard_layout, v_is_run_and_pause, v_created_by_user_id, v_instance_type_id, v_original_template_id, v_original_template_name, v_migration_downtime, v_template_version_number, v_serial_number_policy, v_custom_serial_number, v_is_boot_menu_enabled, v_numatu! ne_mode, v_is_spice_file_transfer_enabled, v_is_spice_copy_paste_enabled, v_cpu_profile_id); -- 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; @@ -640,7 +639,6 @@ v_is_run_and_pause BOOLEAN, v_created_by_user_id UUID, v_instance_type_id UUID, -v_image_type_id UUID, v_original_template_id UUID, v_original_template_name VARCHAR(255), v_migration_downtime INTEGER, @@ -679,7 +677,7 @@ 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, sso_method = v_sso_method, host_cpu_flags = v_host_cpu_flags, tunnel_migration = v_tunnel_migration, vnc_keyboard_layout = v_vnc_keyboard_layout, is_run_and_pause = v_is_run_and_pause, created_by_user_id = v_created_by_user_id, - instance_type_id = v_instance_type_id, image_type_id = v_image_type_id, original_template_id = v_original_template_id, + instance_type_id = v_instance_type_id, original_template_id = v_original_template_id, original_template_name = v_original_template_name, migration_downtime = v_migration_downtime, template_version_number = v_template_version_number, serial_number_policy = v_serial_number_policy, custom_serial_number = v_custom_serial_number, -- To view, visit http://gerrit.ovirt.org/32284 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I00582d1c76bd3c30a0956047edf7e2cbb31ff3cb 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