Shahar Havivi has uploaded a new change for review. Change subject: engine: VmPayload needs to inherit from VmDevice ......................................................................
engine: VmPayload needs to inherit from VmDevice It is represent a device and we need the Address and the Id for stable devices. Change-Id: Ieabf99eaaff0d6e68a0521af3df43a774ca31590 Bug-Url: https://bugzilla.redhat.com/1138314 Signed-off-by: Shahar Havivi <[email protected]> --- 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/GetVmPayloadQuery.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java 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/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmPayload.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java M backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java 13 files changed, 66 insertions(+), 46 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/83/33883/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 b78b086..e38ba4f 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 @@ -855,7 +855,7 @@ if (payload != null) { VmDeviceUtils.addManagedDevice(new VmDeviceId(Guid.newGuid(), getParameters().getVmId()), VmDeviceGeneralType.DISK, - payload.getType(), + payload.getDeviceType(), payload.getSpecParams(), true, true, diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmPayloadQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmPayloadQuery.java index 639d778..eeab2fd 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmPayloadQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmPayloadQuery.java @@ -2,14 +2,12 @@ import java.util.List; import java.util.Map; - import org.apache.commons.codec.binary.Base64; import org.ovirt.engine.core.bll.context.EngineContext; import org.ovirt.engine.core.common.businessentities.VmDevice; import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; import org.ovirt.engine.core.common.businessentities.VmPayload; import org.ovirt.engine.core.common.queries.IdQueryParameters; -import org.ovirt.engine.core.common.utils.VmDeviceType; import org.ovirt.engine.core.dao.VmDeviceDAO; @@ -30,9 +28,7 @@ for (VmDevice disk : disks) { if (VmPayload.isPayload(disk.getSpecParams())) { - VmPayload payload = new VmPayload(VmDeviceType.valueOf(disk.getType().name()), - disk.getSpecParams()); - payload.setType(VmDeviceType.valueOf(disk.getDevice().toUpperCase())); + VmPayload payload = new VmPayload(disk); for (Map.Entry<String, String> entry : payload.getFiles().entrySet()) { entry.setValue(new String(Base64.decodeBase64(entry.getValue()))); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java index 704fc36..4df7457 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessDownVmCommand.java @@ -1,11 +1,9 @@ package org.ovirt.engine.core.bll; -import org.ovirt.engine.core.bll.context.CommandContext; - import java.util.Collections; import java.util.Date; import java.util.List; - +import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.bll.job.ExecutionHandler; import org.ovirt.engine.core.bll.quota.QuotaManager; import org.ovirt.engine.core.bll.snapshots.SnapshotsManager; @@ -15,8 +13,8 @@ import org.ovirt.engine.core.common.action.VmManagementParametersBase; import org.ovirt.engine.core.common.action.VmOperationParameterBase; import org.ovirt.engine.core.common.action.VmPoolSimpleUserParameters; -import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType; import org.ovirt.engine.core.common.businessentities.Snapshot; +import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType; import org.ovirt.engine.core.common.businessentities.VmDevice; import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; import org.ovirt.engine.core.common.businessentities.VmPayload; @@ -208,7 +206,7 @@ break; case DISK: if (VmPayload.isPayload(device.getSpecParams())) { - updateVmParams.setVmPayload(new VmPayload(VmDeviceType.getByName(device.getDevice()), device.getSpecParams())); + updateVmParams.setVmPayload(new VmPayload(device)); } break; case CONSOLE: 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 d21f833..ed0c849 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 @@ -842,7 +842,7 @@ if (checkPayload(getParameters().getVmPayload(), getParameters().getDiskPath()) && !StringUtils.isEmpty(getParameters().getFloppyPath()) && - getParameters().getVmPayload().getType() == VmDeviceType.FLOPPY) { + getParameters().getVmPayload().getDeviceType() == VmDeviceType.FLOPPY) { return failCanDoAction(VdcBllMessages.VMPAYLOAD_FLOPPY_EXCEEDED); } 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 b33035f..f757a43 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 @@ -3,7 +3,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; - import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.bll.job.ExecutionContext; import org.ovirt.engine.core.bll.job.ExecutionHandler; @@ -26,7 +25,6 @@ import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; import org.ovirt.engine.core.common.businessentities.VmPayload; import org.ovirt.engine.core.common.errors.VdcBllMessages; -import org.ovirt.engine.core.common.utils.VmDeviceType; import org.ovirt.engine.core.common.vdscommands.CreateVmVDSCommandParameters; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.VmDeviceDAO; @@ -89,9 +87,7 @@ for (VmDevice disk : disks) { if (VmPayload.isPayload(disk.getSpecParams())) { - VmPayload payload = new VmPayload(VmDeviceType.valueOf(disk.getType().name()), - disk.getSpecParams()); - payload.setType(VmDeviceType.valueOf(disk.getDevice().toUpperCase())); + VmPayload payload = new VmPayload(disk); getVm().setVmPayload(payload); break; } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java index 5d1351b..2954402 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java @@ -322,7 +322,7 @@ if (!getParameters().isClearPayload()) { VmDeviceUtils.addManagedDevice(new VmDeviceId(Guid.newGuid(), getVmId()), VmDeviceGeneralType.DISK, - payload.getType(), + payload.getDeviceType(), payload.getSpecParams(), true, true, diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java index ef5c925..cab9908 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java @@ -529,7 +529,7 @@ protected boolean checkPayload(VmPayload payload, String isoPath) { boolean returnValue = true; - if (payload.getType() != VmDeviceType.CDROM && payload.getType() != VmDeviceType.FLOPPY) { + if (payload.getDeviceType() != VmDeviceType.CDROM && payload.getDeviceType() != VmDeviceType.FLOPPY) { addCanDoActionMessage(VdcBllMessages.VMPAYLOAD_INVALID_PAYLOAD_TYPE); returnValue = false; } else { diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmPayload.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmPayload.java index cfd8dcc..1b472d6 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmPayload.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmPayload.java @@ -3,35 +3,39 @@ import java.io.Serializable; import java.util.HashMap; import java.util.Map; - import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; +import org.ovirt.engine.core.common.utils.ObjectUtils; import org.ovirt.engine.core.common.utils.VmDeviceType; -public class VmPayload implements Serializable { +public class VmPayload extends VmDevice implements Serializable { private static final long serialVersionUID = -3665087594884425768L; private static final String SpecParamsPayload = "vmPayload"; private static final String SpecParamsVolumeIdType = "volId"; private static final String SpecParamsFileType = "file"; - private VmDeviceType type; private String volumeId; private HashMap<String, String> files; // file data is base64-encoded public VmPayload() { - this.type = VmDeviceType.CDROM; + setDeviceType(VmDeviceType.CDROM); this.volumeId = null; this.files = new HashMap<String, String>(); } @SuppressWarnings("unchecked") - public VmPayload(VmDeviceType type, Map<String, Object> specParams) { - this.type = type; + public VmPayload(VmDevice dev) { + super(dev.getId(), dev.getType(), dev.getDevice(), + dev.getAddress(), dev.getBootOrder(), dev.getSpecParams(), + dev.getIsManaged(), dev.getIsPlugged(), dev.getIsReadOnly(), + dev.getAlias(), dev.getCustomProperties(), dev.getSnapshotId()); - Map<String, Object> payload = (Map<String, Object>)specParams.get(SpecParamsPayload); - this.volumeId = (String)payload.get(SpecParamsVolumeIdType); - this.files = (HashMap<String, String>)payload.get(SpecParamsFileType); + if (dev.getSpecParams() != null) { + Map<String, Object> payload = (Map<String, Object>)dev.getSpecParams().get(SpecParamsPayload); + this.volumeId = (String)payload.get(SpecParamsVolumeIdType); + this.files = (HashMap<String, String>)payload.get(SpecParamsFileType); + } } public static boolean isPayload(Map<String, Object> specParams) { @@ -42,12 +46,12 @@ return payload.length() <= Config.<Integer> getValue(ConfigValues.PayloadSize); } - public VmDeviceType getType() { - return this.type; + public VmDeviceType getDeviceType() { + return VmDeviceType.getByName(super.getDevice()); } - public void setType(VmDeviceType type) { - this.type = type; + public void setDeviceType(VmDeviceType type) { + super.setDevice(type.getName()); } public String getVolumeId() { @@ -83,4 +87,31 @@ return specParams; } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + super.hashCode(); + result = prime * result + ((volumeId == null) ? 0 : volumeId.hashCode()); + result = prime * result + ((files == null) ? 0 : files.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof VmDevice)) { + return false; + } + VmPayload other = (VmPayload) obj; + return (super.equals(obj) + && ObjectUtils.objectsEqual(volumeId, other.volumeId) + && ObjectUtils.objectsEqual(files, other.files)); + } } diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java index dac0da7..9364836 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java @@ -1082,7 +1082,7 @@ private VmPayload getPayloadModel() { VmPayload payload = new VmPayload(); - payload.setType(VmDeviceType.CDROM); + payload.setDeviceType(VmDeviceType.CDROM); payload.getFiles().put("payloadFile", new String(Base64.decodeBase64(PAYLOAD_COMTENT))); return payload; } diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java index dd9e1a5..d69590c 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmsResourceTest.java @@ -1234,7 +1234,7 @@ private VmPayload getPayloadModel() { VmPayload payload = new VmPayload(); - payload.setType(VmDeviceType.CDROM); + payload.setDeviceType(VmDeviceType.CDROM); payload.getFiles().put("payloadFile", new String(Base64.decodeBase64(PAYLOAD_COMTENT))); return payload; } 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 eb7af24..4c5624d 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 @@ -1020,10 +1020,10 @@ @Mapping(from = VmPayload.class, to = Payload.class) public static Payload map(VmPayload entity, Payload template) { - if (entity.getType() != null || entity.getFiles().isEmpty()) { + if (entity.getDeviceType() != null || entity.getFiles().isEmpty()) { Payload model = template != null ? template : new Payload(); - if (entity.getType() != null) { - org.ovirt.engine.api.model.VmDeviceType deviceType = map(entity.getType(), null); + if (entity.getDeviceType() != null) { + org.ovirt.engine.api.model.VmDeviceType deviceType = map(entity.getDeviceType(), null); if (deviceType != null) { model.setType(deviceType.value()); } @@ -1049,7 +1049,7 @@ if (model.getType() != null) { org.ovirt.engine.api.model.VmDeviceType deviceType = org.ovirt.engine.api.model.VmDeviceType.fromValue(model.getType()); if (deviceType!=null) { - entity.setType(map(deviceType, null)); + entity.setDeviceType(map(deviceType, null)); } } if (model.isSetVolumeId()) { diff --git a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java index a511417..3ea8bfb 100644 --- a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java +++ b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java @@ -155,10 +155,10 @@ @Test public void testVmPayloadMapToPaylod() { VmPayload vmPayload = new VmPayload(); - vmPayload.setType(org.ovirt.engine.core.common.utils.VmDeviceType.CDROM); + vmPayload.setDeviceType(org.ovirt.engine.core.common.utils.VmDeviceType.CDROM); vmPayload.setVolumeId("CD-VOL"); Payload payload = VmMapper.map(vmPayload, null); - assertEquals(vmPayload.getType().name().toLowerCase(), payload.getType()); + assertEquals(vmPayload.getDeviceType().name().toLowerCase(), payload.getType()); assertEquals(vmPayload.getVolumeId(), payload.getVolumeId()); } @@ -168,7 +168,7 @@ payload.setType("CDROM"); payload.setVolumeId("CD-VOL"); VmPayload vmPayload = VmMapper.map(payload, null); - assertEquals(payload.getType(), vmPayload.getType().name()); + assertEquals(payload.getType(), vmPayload.getDeviceType().name()); assertEquals(payload.getVolumeId(), vmPayload.getVolumeId()); } 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 daf3a19..121c472 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 @@ -7,7 +7,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; - import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.common.FeatureSupported; @@ -132,7 +131,7 @@ protected void buildVmCD() { Map<String, Object> struct; // check if we have payload CD - if (vm.getVmPayload() != null && vm.getVmPayload().getType() == VmDeviceType.CDROM) { + if (vm.getVmPayload() != null && vm.getVmPayload().getDeviceType() == VmDeviceType.CDROM) { VmDevice vmDevice = new VmDevice(new VmDeviceId(Guid.newGuid(), vm.getId()), VmDeviceGeneralType.DISK, @@ -193,7 +192,7 @@ @Override protected void buildVmFloppy() { // check if we have payload CD - if (vm.getVmPayload() != null && vm.getVmPayload().getType() == VmDeviceType.FLOPPY) { + if (vm.getVmPayload() != null && vm.getVmPayload().getDeviceType() == VmDeviceType.FLOPPY) { VmDevice vmDevice = new VmDevice(new VmDeviceId(Guid.newGuid(), vm.getId()), VmDeviceGeneralType.DISK, @@ -552,7 +551,7 @@ // We do not validate the size of the content being passed to the VM payload by VmPayload.isPayloadSizeLegal(). // The sysprep file size isn't being verified for 3.0 clusters and below, so we maintain the same behavior here. VmPayload vmPayload = new VmPayload(); - vmPayload.setType(VmDeviceType.FLOPPY); + vmPayload.setDeviceType(VmDeviceType.FLOPPY); vmPayload.getFiles().put(SYSPREP_FILE_NAME, Base64.encodeBase64String(sysPrepContent.getBytes())); VmDevice vmDevice = @@ -576,7 +575,7 @@ @Override protected void buildCloudInitVmPayload(Map<String, byte[]> cloudInitContent) { VmPayload vmPayload = new VmPayload(); - vmPayload.setType(VmDeviceType.CDROM); + vmPayload.setDeviceType(VmDeviceType.CDROM); vmPayload.setVolumeId(CLOUD_INIT_VOL_ID); for (Map.Entry<String, byte[]> entry : cloudInitContent.entrySet()) { vmPayload.getFiles().put(entry.getKey(), Base64.encodeBase64String(entry.getValue())); -- To view, visit http://gerrit.ovirt.org/33883 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ieabf99eaaff0d6e68a0521af3df43a774ca31590 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Shahar Havivi <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
