Martin Betak has uploaded a new change for review. Change subject: restapi: Refactor VM and Template mappers ......................................................................
restapi: Refactor VM and Template mappers Refactor VmMapper and TemplateMapper classe and extract common set of field mappings to newly created VmBaseMapper class. Also introduce new base resource class VmBase from which the VM and Template are derived similarly as they are implemented on the backend. Change-Id: Iddd80e10360234d75d142f224ecb8ad920fbf282 Signed-off-by: Martin Betak <mbe...@redhat.com> --- 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/TemplateMapper.java A backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmBaseMapper.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 5 files changed, 305 insertions(+), 593 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/89/30189/1 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 5ff3af2..173db62 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 @@ -2607,38 +2607,11 @@ <xs:complexType name="Template"> <xs:complexContent> - <xs:extension base="BaseResource"> + <xs:extension base="VmBase"> <xs:sequence> <xs:element ref="vm" minOccurs="0" maxOccurs="1"/> - <xs:element name="type" type="xs:string" minOccurs="0"/> - <xs:element ref="status" minOccurs="0" maxOccurs="1"/> - <xs:element name="memory" type="xs:long" minOccurs="0"/> - <xs:element name="cpu" type="CPU" minOccurs="0"/> - <xs:element name="cpu_shares" type="xs:int" minOccurs="0" maxOccurs="1"/> - <xs:element name="bios" type="Bios" minOccurs="0" maxOccurs="1" /> - <xs:element name="os" type="OperatingSystem" minOccurs="0"/> - <xs:element ref="cluster" minOccurs="0" maxOccurs="1"/> - <xs:element ref="storage_domain" minOccurs="0" maxOccurs="1"/> - <xs:element name="creation_time" type="xs:dateTime" minOccurs="0"/> - <xs:element name="origin" type="xs:string" minOccurs="0"/> - <xs:element name="high_availability" type="HighAvailability" minOccurs="0"/> - <xs:element name="display" type="Display" minOccurs="0" maxOccurs="1"/> - <xs:element name="stateless" type="xs:boolean" minOccurs="0"/> - <xs:element name="delete_protected" type="xs:boolean" minOccurs="0"/> - <xs:element ref="sso" minOccurs="0" maxOccurs="1"/> - <xs:element ref="rng_device" minOccurs="0" maxOccurs="1"/> - <xs:element ref="console" minOccurs="0" maxOccurs="1"/> - <xs:element name="timezone" type="xs:string" minOccurs="0" maxOccurs="1"/> - <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="migration_downtime" type="xs:int" minOccurs="0" maxOccurs="1" /> - <xs:element ref="virtio_scsi" minOccurs="0" maxOccurs="1"/> - <xs:element ref="permissions" minOccurs="0" maxOccurs="1"/> <!-- also rel="cdroms/disks/nics/watchdogs" links, see Devices below --> <xs:element name="version" type="TemplateVersion" minOccurs="0" maxOccurs="1"/> - <xs:element ref="serial_number" minOccurs="0" maxOccurs="1" /> - <xs:element name="start_paused" type="xs:boolean" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> @@ -3000,6 +2973,42 @@ </xs:sequence> </xs:complexType> + <xs:complexType name="VmBase"> + <xs:complexContent> + <xs:extension base="BaseResource"> + <xs:sequence> + <xs:element name="type" type="xs:string" minOccurs="0"/> + <xs:element ref="status" minOccurs="0" maxOccurs="1"/> + <xs:element name="memory" type="xs:long" minOccurs="0"/> + <xs:element name="cpu" type="CPU" minOccurs="0"/> + <xs:element name="cpu_shares" type="xs:int" minOccurs="0" maxOccurs="1"/> + <xs:element name="bios" type="Bios" minOccurs="0" maxOccurs="1" /> + <xs:element name="os" type="OperatingSystem" minOccurs="0"/> + <xs:element ref="cluster" minOccurs="0" maxOccurs="1"/> + <xs:element ref="storage_domain" minOccurs="0" maxOccurs="1"/> + <xs:element name="creation_time" type="xs:dateTime" minOccurs="0"/> + <xs:element name="origin" type="xs:string" minOccurs="0"/> + <xs:element name="stateless" type="xs:boolean" minOccurs="0"/> + <xs:element name="delete_protected" type="xs:boolean" minOccurs="0"/> + <xs:element name="high_availability" type="HighAvailability" minOccurs="0"/> + <xs:element name="display" type="Display" minOccurs="0" maxOccurs="1"/> + <xs:element ref="sso" minOccurs="0" maxOccurs="1"/> + <xs:element ref="rng_device" minOccurs="0" maxOccurs="1"/> + <xs:element ref="console" minOccurs="0" maxOccurs="1"/> + <xs:element name="timezone" type="xs:string" minOccurs="0" maxOccurs="1"/> + <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="migration_downtime" type="xs:int" minOccurs="0" maxOccurs="1" /> + <xs:element ref="virtio_scsi" minOccurs="0" maxOccurs="1"/> + <xs:element ref="permissions" minOccurs="0" maxOccurs="1"/> + <xs:element ref="serial_number" minOccurs="0" maxOccurs="1" /> + <xs:element name="start_paused" type="xs:boolean" minOccurs="0" maxOccurs="1" /> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:element name="vms" type="VMs"/> <xs:element name="vm" type="VM"/> @@ -3010,34 +3019,14 @@ </xs:appinfo> </xs:annotation> <xs:complexContent> - <xs:extension base="BaseResource"> + <xs:extension base="VmBase"> <xs:sequence> - <xs:element name="type" type="xs:string" minOccurs="0"/> - <xs:element ref="status" minOccurs="0" maxOccurs="1"/> <xs:element name="stop_reason" type="xs:string" minOccurs="0" maxOccurs="1"/> - <xs:element name="memory" type="xs:long" minOccurs="0"/> - <xs:element name="cpu" type="CPU" minOccurs="0"/> - <xs:element name="cpu_shares" type="xs:int" minOccurs="0" maxOccurs="1"/> - <xs:element name="bios" type="Bios" minOccurs="0" maxOccurs="1" /> - <xs:element name="os" type="OperatingSystem" minOccurs="0"/> - <xs:element name="high_availability" type="HighAvailability" minOccurs="0"/> - <xs:element name="display" type="Display" minOccurs="0" maxOccurs="1"/> <xs:element ref="host" minOccurs="0" maxOccurs="1"/> - <xs:element ref="cluster" minOccurs="0" maxOccurs="1"/> <xs:element ref="template" minOccurs="0" maxOccurs="1"/> <xs:element ref="instance_type" minOccurs="0" maxOccurs="1"/> - <xs:element ref="storage_domain" minOccurs="0" maxOccurs="1"/> <xs:element name="start_time" type="xs:dateTime" minOccurs="0"/> <xs:element name="stop_time" type="xs:dateTime" minOccurs="0"/> - <xs:element name="creation_time" type="xs:dateTime" minOccurs="0"/> - <xs:element name="origin" type="xs:string" minOccurs="0"/> - <xs:element name="stateless" type="xs:boolean" minOccurs="0"/> - <xs:element name="delete_protected" type="xs:boolean" minOccurs="0"/> - <xs:element ref="sso" minOccurs="0" maxOccurs="1"/> - <xs:element ref="rng_device" minOccurs="0" maxOccurs="1"/> - <xs:element ref="console" minOccurs="0" maxOccurs="1"/> - <xs:element name="timezone" type="xs:string" minOccurs="0" maxOccurs="1"/> - <xs:element ref="domain" minOccurs="0" maxOccurs="1"/> <xs:element name="custom_properties" type="CustomProperties" minOccurs="0"/> <xs:element name="payloads" type="Payloads" minOccurs="0"/> <xs:element name="statistics" type="Statistics" minOccurs="0" maxOccurs="1"/> @@ -3050,11 +3039,6 @@ <xs:element name="memory_policy" type="MemoryPolicy" minOccurs="0" maxOccurs="1"/> <xs:element name="guest_info" type="GuestInfo" minOccurs="0" maxOccurs="1"/> <xs:element ref="quota" 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="migration_downtime" type="xs:int" minOccurs="0" maxOccurs="1" /> - <xs:element ref="virtio_scsi" minOccurs="0" maxOccurs="1"/> - <xs:element ref="permissions" minOccurs="0" maxOccurs="1"/> <xs:element ref="vmpool" minOccurs="0" maxOccurs="1"> <xs:annotation> <xs:appinfo> @@ -3074,10 +3058,8 @@ <xs:element ref="reported_devices" minOccurs="0" maxOccurs="1"/> <xs:element ref="watchdogs" minOccurs="0" maxOccurs="1"/> <xs:element name="use_latest_template_version" type="xs:boolean" minOccurs="0" maxOccurs="1"/> - <xs:element ref="serial_number" minOccurs="0" maxOccurs="1" /> <xs:element name="next_run_configuration_exists" type="xs:boolean" minOccurs="0" maxOccurs="1"/> <xs:element name="numa_tune_mode" type="xs:string" minOccurs="0" maxOccurs="1"/> - <xs:element name="start_paused" type="xs:boolean" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:extension> </xs:complexContent> diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java index 6024b72..e9bc667 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java @@ -3,27 +3,13 @@ import org.apache.commons.lang.StringUtils; import org.ovirt.engine.api.common.util.StatusUtils; import org.ovirt.engine.api.model.Architecture; -import org.ovirt.engine.api.model.Bios; import org.ovirt.engine.api.model.Boot; -import org.ovirt.engine.api.model.BootMenu; -import org.ovirt.engine.api.model.CPU; -import org.ovirt.engine.api.model.Cluster; -import org.ovirt.engine.api.model.CpuTopology; import org.ovirt.engine.api.model.Display; -import org.ovirt.engine.api.model.DisplayType; -import org.ovirt.engine.api.model.Domain; -import org.ovirt.engine.api.model.HighAvailability; import org.ovirt.engine.api.model.OperatingSystem; import org.ovirt.engine.api.model.Template; import org.ovirt.engine.api.model.TemplateStatus; import org.ovirt.engine.api.model.TemplateVersion; -import org.ovirt.engine.api.model.Usb; -import org.ovirt.engine.api.model.UsbType; -import org.ovirt.engine.api.model.VmType; -import org.ovirt.engine.api.restapi.utils.GuidUtils; -import org.ovirt.engine.api.restapi.utils.UsbMapperUtils; import org.ovirt.engine.core.common.action.UpdateVmTemplateParameters; -import org.ovirt.engine.core.common.businessentities.OriginType; import org.ovirt.engine.core.common.businessentities.VmInit; import org.ovirt.engine.core.common.businessentities.VmStatic; import org.ovirt.engine.core.common.businessentities.VmTemplate; @@ -32,68 +18,16 @@ import org.ovirt.engine.core.common.utils.SimpleDependecyInjector; import org.ovirt.engine.core.compat.Guid; -import static org.ovirt.engine.api.restapi.types.IntegerMapper.mapNullToMinusOne; -import static org.ovirt.engine.api.restapi.types.IntegerMapper.mapMinusOneToNull; - -public class TemplateMapper { +public class TemplateMapper extends VmBaseMapper { private static final int BYTES_PER_MB = 1024 * 1024; @Mapping(from = Template.class, to = VmTemplate.class) public static VmTemplate map(Template model, VmTemplate incoming) { VmTemplate entity = incoming != null ? incoming : new VmTemplate(); - if (model.isSetName()) { - entity.setName(model.getName()); - } - if (model.isSetId()) { - entity.setId(GuidUtils.asGuid(model.getId())); - } - if (model.isSetDescription()) { - entity.setDescription(model.getDescription()); - } - if (model.isSetComment()) { - entity.setComment(model.getComment()); - } - if (model.isSetCluster() && model.getCluster().getId() != null) { - entity.setVdsGroupId(GuidUtils.asGuid(model.getCluster().getId())); - } - if (model.isSetHighAvailability()) { - if (model.getHighAvailability().isSetEnabled()) { - entity.setAutoStartup(model.getHighAvailability().isEnabled()); - } - if (model.getHighAvailability().isSetPriority()) { - entity.setPriority(model.getHighAvailability().getPriority()); - } - } - if (model.isSetStateless()) { - entity.setStateless(model.isStateless()); - } - if (model.isSetDeleteProtected()) { - entity.setDeleteProtected(model.isDeleteProtected()); - } - if (model.isSetSso() && model.getSso().isSetMethods()) { - entity.setSsoMethod(SsoMapper.map(model.getSso(), null)); - } - if (model.isSetType()) { - VmType vmType = VmType.fromValue(model.getType()); - if (vmType != null) { - entity.setVmType(VmMapper.map(vmType, null)); - } - } - if (model.isSetOrigin()) { - entity.setOrigin(VmMapper.map(model.getOrigin(), (OriginType)null)); - } - if (model.isSetMemory()) { - entity.setMemSizeMb((int)(model.getMemory() / BYTES_PER_MB)); - } - if (model.isSetCpu() && model.getCpu().isSetTopology()) { - if (model.getCpu().getTopology().getCores()!=null) { - entity.setCpuPerSocket(model.getCpu().getTopology().getCores()); - } - if (model.getCpu().getTopology().getSockets()!=null) { - entity.setNumOfSockets(model.getCpu().getTopology().getSockets()); - } - } + + mapVmBaseModelToEntity(entity, model); + if (model.isSetCpu() && model.getCpu().isSetArchitecture()) { Architecture archType = Architecture.fromValue(model.getCpu().getArchitecture()); @@ -101,82 +35,11 @@ entity.setClusterArch(CPUMapper.map(archType, null)); } } - if (model.isSetBios()) { - if (model.getBios().isSetBootMenu()) { - entity.setBootMenuEnabled(model.getBios().getBootMenu().isEnabled()); - } - } - if (model.isSetCpuShares()) { - entity.setCpuShares(model.getCpuShares()); - } - if (model.isSetOs()) { - if (model.getOs().isSetType()) { - entity.setOsId(VmMapper.mapOsType(model.getOs().getType())); - } - if (model.getOs().isSetBoot() && model.getOs().getBoot().size() > 0) { - entity.setDefaultBootSequence(VmMapper.map(model.getOs().getBoot(), null)); - } - if (model.getOs().isSetKernel()) { - entity.setKernelUrl(model.getOs().getKernel()); - } - if (model.getOs().isSetInitrd()) { - entity.setInitrdUrl(model.getOs().getInitrd()); - } - if (model.getOs().isSetCmdline()) { - entity.setKernelParams(model.getOs().getCmdline()); - } - } - if (model.isSetDisplay()) { - if (model.getDisplay().isSetType()) { - DisplayType displayType = DisplayType.fromValue(model.getDisplay().getType()); - if (displayType != null) { - entity.setDefaultDisplayType(VmMapper.map(displayType, null)); - } - } - if (model.getDisplay().isSetMonitors()) { - entity.setNumOfMonitors(model.getDisplay().getMonitors()); - } - if (model.getDisplay().isSetSingleQxlPci()) { - entity.setSingleQxlPci(model.getDisplay().isSingleQxlPci()); - } - if (model.getDisplay().isSetAllowOverride()) { - entity.setAllowConsoleReconnect(model.getDisplay().isAllowOverride()); - } - if (model.getDisplay().isSetSmartcardEnabled()) { - entity.setSmartcardEnabled(model.getDisplay().isSmartcardEnabled()); - } - if (model.getDisplay().isSetKeyboardLayout()) { - String layout = model.getDisplay().getKeyboardLayout(); - if (layout.isEmpty()) { - layout = null; // uniquely represent unset keyboard layout as null - } - entity.setVncKeyboardLayout(layout); - } - if (model.getDisplay().isSetFileTransferEnabled()) { - entity.setSpiceFileTransferEnabled(model.getDisplay().isFileTransferEnabled()); - } - if (model.getDisplay().isSetCopyPasteEnabled()) { - entity.setSpiceCopyPasteEnabled(model.getDisplay().isCopyPasteEnabled()); - } - } if (model.isSetDomain() && model.getDomain().isSetName()) { if (entity.getVmInit() == null) { entity.setVmInit(new VmInit()); } entity.getVmInit().setDomain(model.getDomain().getName()); - } - if (model.isSetTimezone()) { - String timezone = model.getTimezone(); - if (timezone.isEmpty()) { - timezone = null; // normalize default timezone representation - } - entity.setTimeZone(timezone); - } - if (model.isSetTunnelMigration()) { - entity.setTunnelMigration(model.isTunnelMigration()); - } - if (model.isSetMigrationDowntime()) { - entity.setMigrationDowntime(mapMinusOneToNull(model.getMigrationDowntime())); } if (model.getVersion() != null) { if (model.getVersion().getBaseTemplate() != null @@ -189,144 +52,20 @@ // numbering is generated in the backend, hence even if user specified version number, we ignore it. } - if (model.isSetSerialNumber()) { - SerialNumberMapper.copySerialNumber(model.getSerialNumber(), entity); - } - if (model.isSetStartPaused()) { - entity.setRunAndPause(model.isStartPaused()); - } - return entity; } @Mapping(from = Template.class, to = VmStatic.class) public static VmStatic map(Template model, VmStatic incoming) { VmStatic staticVm = incoming != null ? incoming : new VmStatic(); - if (model.isSetName()) { - staticVm.setName(model.getName()); - } - if (model.isSetId()) { - staticVm.setId(GuidUtils.asGuid(model.getId())); - } - if (model.isSetDescription()) { - staticVm.setDescription(model.getDescription()); - } - if (model.isSetComment()) { - staticVm.setComment(model.getComment()); - } - if (model.isSetCluster() && model.getCluster().getId() != null) { - staticVm.setVdsGroupId(GuidUtils.asGuid(model.getCluster().getId())); - } - if (model.isSetHighAvailability()) { - if (model.getHighAvailability().isSetEnabled()) { - staticVm.setAutoStartup(model.getHighAvailability().isEnabled()); - } - if (model.getHighAvailability().isSetPriority()) { - staticVm.setPriority(model.getHighAvailability().getPriority()); - } - } - if (model.isSetStateless()) { - staticVm.setStateless(model.isStateless()); - } - if (model.isSetDeleteProtected()) { - staticVm.setDeleteProtected(model.isDeleteProtected()); - } - if (model.isSetSso() && model.getSso().isSetMethods()) { - staticVm.setSsoMethod(SsoMapper.map(model.getSso(), null)); - } - if (model.isSetType()) { - VmType vmType = VmType.fromValue(model.getType()); - if (vmType != null) { - staticVm.setVmType(VmMapper.map(vmType, null)); - } - } - if (model.isSetOrigin()) { - staticVm.setOrigin(VmMapper.map(model.getOrigin(), (OriginType)null)); - } - if (model.isSetMemory()) { - staticVm.setMemSizeMb((int)(model.getMemory() / BYTES_PER_MB)); - } - if (model.isSetCpu() && model.getCpu().isSetTopology()) { - if (model.getCpu().getTopology().getCores()!=null) { - staticVm.setCpuPerSocket(model.getCpu().getTopology().getCores()); - } - if (model.getCpu().getTopology().getSockets()!=null) { - staticVm.setNumOfSockets(model.getCpu().getTopology().getSockets()); - } - } - if (model.isSetCpuShares()) { - staticVm.setCpuShares(model.getCpuShares()); - } - if (model.isSetOs()) { - if (model.getOs().isSetType()) { - staticVm.setOsId(VmMapper.mapOsType(model.getOs().getType())); - } - if (model.getOs().isSetBoot() && model.getOs().getBoot().size() > 0) { - staticVm.setDefaultBootSequence(VmMapper.map(model.getOs().getBoot(), null)); - } - if (model.getOs().isSetKernel()) { - staticVm.setKernelUrl(model.getOs().getKernel()); - } - if (model.getOs().isSetInitrd()) { - staticVm.setInitrdUrl(model.getOs().getInitrd()); - } - if (model.getOs().isSetCmdline()) { - staticVm.setKernelParams(model.getOs().getCmdline()); - } - } - if (model.isSetDisplay()) { - if (model.getDisplay().isSetType()) { - DisplayType displayType = DisplayType.fromValue(model.getDisplay().getType()); - if (displayType != null) { - staticVm.setDefaultDisplayType(VmMapper.map(displayType, null)); - } - } - if (model.getDisplay().isSetMonitors()) { - staticVm.setNumOfMonitors(model.getDisplay().getMonitors()); - } - if (model.getDisplay().isSetSingleQxlPci()) { - staticVm.setSingleQxlPci(model.getDisplay().isSingleQxlPci()); - } - if (model.getDisplay().isSetAllowOverride()) { - staticVm.setAllowConsoleReconnect(model.getDisplay().isAllowOverride()); - } - if (model.getDisplay().isSmartcardEnabled()) { - staticVm.setSmartcardEnabled(model.getDisplay().isSmartcardEnabled()); - } - if (model.getDisplay().isSetKeyboardLayout()) { - String layout = model.getDisplay().getKeyboardLayout(); - if (layout.isEmpty()) { - layout = null; // uniquely represent unset keyboard layout as null - } - staticVm.setVncKeyboardLayout(layout); - } - if (model.getDisplay().isSetFileTransferEnabled()) { - staticVm.setSpiceFileTransferEnabled(model.getDisplay().isFileTransferEnabled()); - } - if (model.getDisplay().isSetCopyPasteEnabled()) { - staticVm.setSpiceCopyPasteEnabled(model.getDisplay().isCopyPasteEnabled()); - } - } + + mapVmBaseModelToEntity(staticVm, model); + if (model.isSetDomain() && model.getDomain().isSetName()) { if (staticVm.getVmInit() == null) { staticVm.setVmInit(new VmInit()); } staticVm.getVmInit().setDomain(model.getDomain().getName()); - } - if (model.isSetTimezone()) { - staticVm.setTimeZone(model.getTimezone()); - } - if (model.isSetTunnelMigration()) { - staticVm.setTunnelMigration(model.isTunnelMigration()); - } - if (model.isSetMigrationDowntime()) { - staticVm.setMigrationDowntime(mapMinusOneToNull(model.getMigrationDowntime())); - } - if (model.isSetSerialNumber()) { - SerialNumberMapper.copySerialNumber(model.getSerialNumber(), staticVm); - } - if (model.isSetStartPaused()) { - staticVm.setRunAndPause(model.isStartPaused()); } return staticVm; } @@ -334,23 +73,9 @@ @Mapping(from = VmTemplate.class, to = Template.class) public static Template map(VmTemplate entity, Template incoming) { Template model = incoming != null ? incoming : new Template(); - model.setId(entity.getId().toString()); - model.setName(entity.getName()); - model.setDescription(entity.getDescription()); - model.setComment(entity.getComment()); - model.setMemory((long) entity.getMemSizeMb() * BYTES_PER_MB); - model.setHighAvailability(new HighAvailability()); - model.getHighAvailability().setEnabled(entity.isAutoStartup()); - model.getHighAvailability().setPriority(entity.getPriority()); - model.setStateless(entity.isStateless()); - model.setDeleteProtected(entity.isDeleteProtected()); - model.setSso(SsoMapper.map(entity.getSsoMethod(), null)); - if (entity.getVmType() != null) { - model.setType(VmMapper.map(entity.getVmType(), null)); - } - if (entity.getOrigin() != null) { - model.setOrigin(VmMapper.map(entity.getOrigin(), null)); - } + + mapVmBaseEntityToModel(model, entity); + if (entity.getStatus() != null) { model.setStatus(StatusUtils.create(map(entity.getStatus(), null))); } @@ -372,20 +97,6 @@ os.setCmdline(entity.getKernelParams()); model.setOs(os); } - model.setBios(new Bios()); - model.getBios().setBootMenu(new BootMenu()); - model.getBios().getBootMenu().setEnabled(entity.isBootMenuEnabled()); - if (entity.getVdsGroupId() != null) { - Cluster cluster = new Cluster(); - cluster.setId(entity.getVdsGroupId().toString()); - model.setCluster(cluster); - } - CpuTopology topology = new CpuTopology(); - topology.setSockets(entity.getNumOfSockets()); - topology.setCores(entity.getNumOfCpus() / entity.getNumOfSockets()); - model.setCpu(new CPU()); - model.getCpu().setTopology(topology); - model.setCpuShares(entity.getCpuShares()); if (entity.getDefaultDisplayType() != null) { model.setDisplay(new Display()); model.getDisplay().setType(VmMapper.map(entity.getDefaultDisplayType(), null)); @@ -400,28 +111,6 @@ if (entity.getClusterArch() != null) { model.getCpu().setArchitecture(CPUMapper.map(entity.getClusterArch(), null)); } - if (entity.getCreationDate() != null) { - model.setCreationTime(DateMapper.map(entity.getCreationDate(), null)); - } - if (entity.getVmInit() != null && - entity.getVmInit().getDomain() != null && - !entity.getVmInit().getDomain().isEmpty()) { - Domain domain = new Domain(); - domain.setName(entity.getVmInit().getDomain()); - model.setDomain(domain); - } - if (entity.getUsbPolicy()!=null) { - Usb usb = new Usb(); - usb.setEnabled(UsbMapperUtils.getIsUsbEnabled(entity.getUsbPolicy())); - UsbType usbType = UsbMapperUtils.getUsbType(entity.getUsbPolicy()); - if (usbType != null) { - usb.setType(usbType.value()); - } - model.setUsb(usb); - } - model.setTimezone(entity.getTimeZone()); - model.setTunnelMigration(entity.getTunnelMigration()); - model.setMigrationDowntime(mapNullToMinusOne(entity.getMigrationDowntime())); // if this is not a base template, that means this is a template version // so need to populate template version properties if (!entity.isBaseTemplate()) { @@ -433,12 +122,6 @@ version.setBaseTemplate(baseTemplate); model.setVersion(version); } - - if (entity.getSerialNumberPolicy() != null) { - model.setSerialNumber(SerialNumberMapper.map(entity, null)); - } - - model.setStartPaused(entity.isRunAndPause()); return model; } diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmBaseMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmBaseMapper.java new file mode 100644 index 0000000..0e8b591 --- /dev/null +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmBaseMapper.java @@ -0,0 +1,244 @@ +package org.ovirt.engine.api.restapi.types; + +import org.ovirt.engine.api.model.Bios; +import org.ovirt.engine.api.model.BootMenu; +import org.ovirt.engine.api.model.CPU; +import org.ovirt.engine.api.model.Cluster; +import org.ovirt.engine.api.model.CpuTopology; +import org.ovirt.engine.api.model.DisplayType; +import org.ovirt.engine.api.model.Domain; +import org.ovirt.engine.api.model.HighAvailability; +import org.ovirt.engine.api.model.Usb; +import org.ovirt.engine.api.model.UsbType; +import org.ovirt.engine.api.model.VmBase; +import org.ovirt.engine.api.model.VmType; +import org.ovirt.engine.api.restapi.utils.GuidUtils; +import org.ovirt.engine.api.restapi.utils.UsbMapperUtils; +import org.ovirt.engine.core.common.businessentities.OriginType; + +import static org.ovirt.engine.api.restapi.types.IntegerMapper.mapMinusOneToNull; +import static org.ovirt.engine.api.restapi.types.IntegerMapper.mapNullToMinusOne; + +public class VmBaseMapper { + protected static final int BYTES_PER_MB = 1024 * 1024; + + protected static void mapVmBaseModelToEntity(org.ovirt.engine.core.common.businessentities.VmBase entity, VmBase model) { + if (model.isSetName()) { + entity.setName(model.getName()); + } + if (model.isSetMemory()) { + entity.setMemSizeMb((int)(model.getMemory() / BYTES_PER_MB)); + } + if (model.isSetId()) { + entity.setId(GuidUtils.asGuid(model.getId())); + } + if (model.isSetDescription()) { + entity.setDescription(model.getDescription()); + } + if (model.isSetComment()) { + entity.setComment(model.getComment()); + } + if (model.isSetCluster() && model.getCluster().getId() != null) { + entity.setVdsGroupId(GuidUtils.asGuid(model.getCluster().getId())); + } + if (model.isSetCpu() && model.getCpu().isSetTopology()) { + if (model.getCpu().getTopology().getCores() != null) { + entity.setCpuPerSocket(model.getCpu().getTopology().getCores()); + } + if (model.getCpu().getTopology().getSockets() != null) { + entity.setNumOfSockets(model.getCpu().getTopology().getSockets()); + } + } + if (model.isSetHighAvailability()) { + if (model.getHighAvailability().isSetEnabled()) { + entity.setAutoStartup(model.getHighAvailability().isEnabled()); + } + if (model.getHighAvailability().isSetPriority()) { + entity.setPriority(model.getHighAvailability().getPriority()); + } + } + if (model.isSetOs()) { + if (model.getOs().isSetType()) { + entity.setOsId(VmMapper.mapOsType(model.getOs().getType())); + } + if (model.getOs().isSetBoot() && model.getOs().getBoot().size() > 0) { + entity.setDefaultBootSequence(VmMapper.map(model.getOs().getBoot(), null)); + } + if (model.getOs().isSetKernel()) { + entity.setKernelUrl(model.getOs().getKernel()); + } + if (model.getOs().isSetInitrd()) { + entity.setInitrdUrl(model.getOs().getInitrd()); + } + if (model.getOs().isSetCmdline()) { + entity.setKernelParams(model.getOs().getCmdline()); + } + } + if (model.isSetBios()) { + if (model.getBios().isSetBootMenu()) { + entity.setBootMenuEnabled(model.getBios().getBootMenu().isEnabled()); + } + } + if (model.isSetCpuShares()) { + entity.setCpuShares(model.getCpuShares()); + } + if (model.isSetDisplay()) { + if (model.getDisplay().isSetType()) { + DisplayType displayType = DisplayType.fromValue(model.getDisplay().getType()); + if (displayType != null) { + entity.setDefaultDisplayType(VmMapper.map(displayType, null)); + } + } + if (model.getDisplay().isSetMonitors()) { + entity.setNumOfMonitors(model.getDisplay().getMonitors()); + } + if (model.getDisplay().isSetSingleQxlPci()) { + entity.setSingleQxlPci(model.getDisplay().isSingleQxlPci()); + } + if (model.getDisplay().isSetAllowOverride()) { + entity.setAllowConsoleReconnect(model.getDisplay().isAllowOverride()); + } + if (model.getDisplay().isSetSmartcardEnabled()) { + entity.setSmartcardEnabled(model.getDisplay().isSmartcardEnabled()); + } + if (model.getDisplay().isSetKeyboardLayout()) { + String layout = model.getDisplay().getKeyboardLayout(); + if (layout.isEmpty()) { + layout = null; // uniquely represent unset keyboard layout as null + } + entity.setVncKeyboardLayout(layout); + } + if (model.getDisplay().isSetFileTransferEnabled()) { + entity.setSpiceFileTransferEnabled(model.getDisplay().isFileTransferEnabled()); + } + if (model.getDisplay().isSetCopyPasteEnabled()) { + entity.setSpiceCopyPasteEnabled(model.getDisplay().isCopyPasteEnabled()); + } + } + if (model.isSetTimezone()) { + String timezone = model.getTimezone(); + if (timezone.isEmpty()) { + timezone = null; // normalize default timezone representation + } + entity.setTimeZone(timezone); + } + if (model.isSetOrigin()) { + entity.setOrigin(VmMapper.map(model.getOrigin(), (OriginType) null)); + } + if (model.isSetStateless()) { + entity.setStateless(model.isStateless()); + } + if (model.isSetDeleteProtected()) { + entity.setDeleteProtected(model.isDeleteProtected()); + } + if (model.isSetSso() && model.getSso().isSetMethods()) { + entity.setSsoMethod(SsoMapper.map(model.getSso(), null)); + } + if (model.isSetType()) { + VmType vmType = VmType.fromValue(model.getType()); + if (vmType != null) { + entity.setVmType(VmMapper.map(vmType, null)); + } + } + if (model.isSetTunnelMigration()) { + entity.setTunnelMigration(model.isTunnelMigration()); + } + if (model.isSetMigrationDowntime()) { + entity.setMigrationDowntime(mapMinusOneToNull(model.getMigrationDowntime())); + } + if (model.isSetSerialNumber()) { + SerialNumberMapper.copySerialNumber(model.getSerialNumber(), entity); + } + if (model.isSetStartPaused()) { + entity.setRunAndPause(model.isStartPaused()); + } + } + + protected static void mapVmBaseEntityToModel(VmBase model, org.ovirt.engine.core.common.businessentities.VmBase entity) { + model.setId(entity.getId().toString()); + model.setName(entity.getName()); + model.setDescription(entity.getDescription()); + model.setComment(entity.getComment()); + model.setMemory((long) entity.getMemSizeMb() * BYTES_PER_MB); + + if (entity.getVdsGroupId() != null) { + Cluster cluster = new Cluster(); + cluster.setId(entity.getVdsGroupId().toString()); + model.setCluster(cluster); + } + + if (entity.getVmType() != null) { + model.setType(map(entity.getVmType(), null)); + } + + if (entity.getOrigin() != null) { + model.setOrigin(map(entity.getOrigin(), null)); + } + + model.setBios(new Bios()); + model.getBios().setBootMenu(new BootMenu()); + model.getBios().getBootMenu().setEnabled(entity.isBootMenuEnabled()); + + model.setTimezone(entity.getTimeZone()); + + if (entity.getCreationDate() != null) { + model.setCreationTime(DateMapper.map(entity.getCreationDate(), null)); + } + + if (entity.getUsbPolicy() != null) { + Usb usb = new Usb(); + usb.setEnabled(UsbMapperUtils.getIsUsbEnabled(entity.getUsbPolicy())); + UsbType usbType = UsbMapperUtils.getUsbType(entity.getUsbPolicy()); + if (usbType != null) { + usb.setType(usbType.value()); + } + model.setUsb(usb); + } + + if (entity.getVmInit() != null && entity.getVmInit().getDomain() != null && !entity.getVmInit().getDomain().isEmpty()) { + Domain domain = new Domain(); + domain.setName(entity.getVmInit().getDomain()); + model.setDomain(domain); + } + + CpuTopology topology = new CpuTopology(); + topology.setSockets(entity.getNumOfSockets()); + topology.setCores(entity.getNumOfCpus() / entity.getNumOfSockets()); + model.setCpu(new CPU()); + model.getCpu().setTopology(topology); + model.setCpuShares(entity.getCpuShares()); + + model.setHighAvailability(new HighAvailability()); + model.getHighAvailability().setEnabled(entity.isAutoStartup()); + model.getHighAvailability().setPriority(entity.getPriority()); + model.setStateless(entity.isStateless()); + model.setDeleteProtected(entity.isDeleteProtected()); + model.setSso(SsoMapper.map(entity.getSsoMethod(), null)); + + model.setTunnelMigration(entity.getTunnelMigration()); + model.setMigrationDowntime(mapNullToMinusOne(entity.getMigrationDowntime())); + + if (entity.getSerialNumberPolicy() != null) { + model.setSerialNumber(SerialNumberMapper.map(entity, null)); + } + + model.setStartPaused(entity.isRunAndPause()); + } + + @Mapping(from = OriginType.class, to = String.class) + public static String map(OriginType type, String incoming) { + return type.name().toLowerCase(); + } + + @Mapping(from = org.ovirt.engine.core.common.businessentities.VmType.class, to = String.class) + public static String map(org.ovirt.engine.core.common.businessentities.VmType type, String incoming) { + switch (type) { + case Desktop: + return VmType.DESKTOP.value(); + case Server: + return VmType.SERVER.value(); + default: + return null; + } + } +} 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 00dc7dd..c7c1beb 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 @@ -1,7 +1,5 @@ package org.ovirt.engine.api.restapi.types; -import static org.ovirt.engine.api.restapi.types.IntegerMapper.mapMinusOneToNull; -import static org.ovirt.engine.api.restapi.types.IntegerMapper.mapNullToMinusOne; import static org.ovirt.engine.core.compat.Guid.createGuidFromString; import java.util.ArrayList; @@ -12,18 +10,13 @@ import org.apache.commons.lang.StringUtils; import org.ovirt.engine.api.common.util.StatusUtils; import org.ovirt.engine.api.model.AuthorizedKey; -import org.ovirt.engine.api.model.Bios; import org.ovirt.engine.api.model.Boot; import org.ovirt.engine.api.model.BootDevice; -import org.ovirt.engine.api.model.BootMenu; import org.ovirt.engine.api.model.BootProtocol; -import org.ovirt.engine.api.model.CPU; import org.ovirt.engine.api.model.CloudInit; -import org.ovirt.engine.api.model.Cluster; import org.ovirt.engine.api.model.Configuration; import org.ovirt.engine.api.model.ConfigurationType; import org.ovirt.engine.api.model.CpuMode; -import org.ovirt.engine.api.model.CpuTopology; import org.ovirt.engine.api.model.CpuTune; import org.ovirt.engine.api.model.CustomProperties; import org.ovirt.engine.api.model.CustomProperty; @@ -63,7 +56,6 @@ import org.ovirt.engine.api.model.VmType; import org.ovirt.engine.api.restapi.utils.CustomPropertiesParser; import org.ovirt.engine.api.restapi.utils.GuidUtils; -import org.ovirt.engine.api.restapi.utils.UsbMapperUtils; import org.ovirt.engine.core.common.action.RunVmOnceParams; import org.ovirt.engine.core.common.businessentities.BootSequence; import org.ovirt.engine.core.common.businessentities.MigrationSupport; @@ -82,9 +74,8 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.Version; -public class VmMapper { +public class VmMapper extends VmBaseMapper { - private static final int BYTES_PER_MB = 1024 * 1024; // REVISIT retrieve from configuration private static final int DEFAULT_MEMORY_SIZE = 10 * 1024; @@ -136,21 +127,10 @@ @Mapping(from = VM.class, to = VmStatic.class) public static VmStatic map(VM vm, VmStatic template) { VmStatic staticVm = template != null ? template : new VmStatic(); - if (vm.isSetName()) { - staticVm.setName(vm.getName()); - } - if (vm.isSetId()) { - staticVm.setId(GuidUtils.asGuid(vm.getId())); - } - if (vm.isSetDescription()) { - staticVm.setDescription(vm.getDescription()); - } - if (vm.isSetComment()) { - staticVm.setComment(vm.getComment()); - } - if (vm.isSetMemory()) { - staticVm.setMemSizeMb((int) (vm.getMemory() / BYTES_PER_MB)); - } else if (staticVm.getMemSizeMb()==0){ + + mapVmBaseModelToEntity(staticVm, vm); + + if (!vm.isSetMemory() && staticVm.getMemSizeMb()==0){ //TODO: Get rid of this logic code when Backend supports default memory. staticVm.setMemSizeMb(DEFAULT_MEMORY_SIZE); } @@ -166,112 +146,15 @@ staticVm.setUseLatestVersion(vm.isUseLatestTemplateVersion()); } } - if (vm.isSetCluster() && vm.getCluster().getId() != null) { - staticVm.setVdsGroupId(GuidUtils.asGuid(vm.getCluster().getId())); - } if (vm.isSetCpu()) { if (vm.getCpu().isSetMode()) { staticVm.setUseHostCpuFlags(CpuMode.fromValue(vm.getCpu().getMode()) == CpuMode.HOST_PASSTHROUGH); - } - if (vm.getCpu().isSetTopology()) { - if (vm.getCpu().getTopology().getCores()!=null) { - staticVm.setCpuPerSocket(vm.getCpu().getTopology().getCores()); - } - if (vm.getCpu().getTopology().getSockets()!=null) { - staticVm.setNumOfSockets(vm.getCpu().getTopology().getSockets()); - } } if (vm.getCpu().isSetCpuTune()) { staticVm.setCpuPinning(cpuTuneToString(vm.getCpu().getCpuTune())); } } - if (vm.isSetCpuShares()) { - staticVm.setCpuShares(vm.getCpuShares()); - } - if (vm.isSetOs()) { - if (vm.getOs().isSetType()) { - staticVm.setOsId(mapOsType(vm.getOs().getType())); - } - if (vm.getOs().isSetBoot() && vm.getOs().getBoot().size() > 0) { - staticVm.setDefaultBootSequence(map(vm.getOs().getBoot(), null)); - } - if (vm.getOs().isSetKernel()) { - staticVm.setKernelUrl(vm.getOs().getKernel()); - } - if (vm.getOs().isSetInitrd()) { - staticVm.setInitrdUrl(vm.getOs().getInitrd()); - } - if (vm.getOs().isSetCmdline()) { - staticVm.setKernelParams(vm.getOs().getCmdline()); - } - } - if (vm.isSetBios()) { - if (vm.getBios().isSetBootMenu()) { - staticVm.setBootMenuEnabled(vm.getBios().getBootMenu().isEnabled()); - } - } - if (vm.isSetType()) { - VmType vmType = VmType.fromValue(vm.getType()); - if (vmType != null) { - staticVm.setVmType(map(vmType, null)); - } - } - if (vm.isSetStateless()) { - staticVm.setStateless(vm.isStateless()); - } - if (vm.isSetDeleteProtected()) { - staticVm.setDeleteProtected(vm.isDeleteProtected()); - } - if (vm.isSetSso() && vm.getSso().isSetMethods()) { - staticVm.setSsoMethod(SsoMapper.map(vm.getSso(), null)); - } - - if (vm.isSetHighAvailability()) { - HighAvailability ha = vm.getHighAvailability(); - if (ha.isSetEnabled()) { - staticVm.setAutoStartup(ha.isEnabled()); - } - if (ha.isSetPriority()) { - staticVm.setPriority(ha.getPriority()); - } - } - if (vm.isSetOrigin()) { - staticVm.setOrigin(map(vm.getOrigin(), (OriginType)null)); - } - if (vm.isSetDisplay()) { - if (vm.getDisplay().isSetType()) { - DisplayType displayType = DisplayType.fromValue(vm.getDisplay().getType()); - if (displayType != null) { - staticVm.setDefaultDisplayType(map(displayType, null)); - } - } - if (vm.getDisplay().isSetMonitors()) { - staticVm.setNumOfMonitors(vm.getDisplay().getMonitors()); - } - if (vm.getDisplay().isSetSingleQxlPci()) { - staticVm.setSingleQxlPci(vm.getDisplay().isSingleQxlPci()); - } - if (vm.getDisplay().isSetAllowOverride()) { - staticVm.setAllowConsoleReconnect(vm.getDisplay().isAllowOverride()); - } - if (vm.getDisplay().isSetSmartcardEnabled()) { - staticVm.setSmartcardEnabled(vm.getDisplay().isSmartcardEnabled()); - } - if (vm.getDisplay().isSetKeyboardLayout()) { - String layout = vm.getDisplay().getKeyboardLayout(); - if (layout.isEmpty()) { - layout = null; // uniquely represent unset keyboard layout as null - } - staticVm.setVncKeyboardLayout(layout); - } - if (vm.getDisplay().isSetFileTransferEnabled()) { - staticVm.setSpiceFileTransferEnabled(vm.getDisplay().isSetFileTransferEnabled()); - } - if (vm.getDisplay().isSetCopyPasteEnabled()) { - staticVm.setSpiceCopyPasteEnabled(vm.getDisplay().isSetCopyPasteEnabled()); - } - } if (vm.isSetPlacementPolicy() && vm.getPlacementPolicy().isSetAffinity()) { VmAffinity vmAffinity = VmAffinity.fromValue(vm.getPlacementPolicy().getAffinity()); if (vmAffinity!=null) { @@ -285,24 +168,11 @@ Long memGuaranteed = vm.getMemoryPolicy().getGuaranteed() / BYTES_PER_MB; staticVm.setMinAllocatedMem(memGuaranteed.intValue()); } - if (vm.isSetTimezone()) { - String timezone = vm.getTimezone(); - if (timezone.isEmpty()) { - timezone = null; // normalize default timezone representation - } - staticVm.setTimeZone(timezone); - } if (vm.isSetCustomProperties()) { staticVm.setCustomProperties(CustomPropertiesParser.parse(vm.getCustomProperties().getCustomProperty())); } if (vm.isSetQuota() && vm.getQuota().isSetId()) { staticVm.setQuotaId(GuidUtils.asGuid(vm.getQuota().getId())); - } - if (vm.isSetTunnelMigration()) { - staticVm.setTunnelMigration(vm.isTunnelMigration()); - } - if (vm.isSetMigrationDowntime()) { - staticVm.setMigrationDowntime(mapMinusOneToNull(vm.getMigrationDowntime())); } if (vm.isSetInitialization()) { staticVm.setVmInit(map(vm.getInitialization(), new VmInit())); @@ -320,19 +190,11 @@ } } - if (vm.isSetSerialNumber()) { - SerialNumberMapper.copySerialNumber(vm.getSerialNumber(), staticVm); - } - if (vm.isSetNumaTuneMode()) { NumaTuneMode mode = NumaTuneMode.fromValue(vm.getNumaTuneMode()); if (mode != null) { staticVm.setNumaTuneMode(map(mode, null)); } - } - - if (vm.isSetStartPaused()) { - staticVm.setRunAndPause(vm.isStartPaused()); } return staticVm; @@ -384,11 +246,9 @@ @Mapping(from = org.ovirt.engine.core.common.businessentities.VM.class, to = org.ovirt.engine.api.model.VM.class) public static VM map(org.ovirt.engine.core.common.businessentities.VM entity, VM template) { VM model = template != null ? template : new VM(); - model.setId(entity.getId().toString()); - model.setName(entity.getName()); - model.setDescription(entity.getVmDescription()); - model.setComment(entity.getComment()); - model.setMemory((long) entity.getMemSizeMb() * BYTES_PER_MB); + + mapVmBaseEntityToModel(model, entity.getStaticData()); + if (entity.getVmtGuid() != null) { model.setTemplate(new Template()); model.getTemplate().setId(entity.getVmtGuid().toString()); @@ -411,9 +271,6 @@ if (entity.getStopReason() != null) { model.setStopReason(entity.getStopReason()); } - model.setBios(new Bios()); - model.getBios().setBootMenu(new BootMenu()); - model.getBios().getBootMenu().setEnabled(entity.isBootMenuEnabled()); if (entity.getBootSequence() != null || entity.getKernelUrl() != null || entity.getInitrdUrl() != null || @@ -427,24 +284,12 @@ os.setCmdline(entity.getKernelParams()); model.setOs(os); } - if (entity.getVdsGroupId() != null) { - Cluster cluster = new Cluster(); - cluster.setId(entity.getVdsGroupId().toString()); - model.setCluster(cluster); - } - CpuTopology topology = new CpuTopology(); - topology.setSockets(entity.getNumOfSockets()); - topology.setCores(entity.getNumOfCpus() / entity.getNumOfSockets()); - final CPU cpu = new CPU(); - model.setCpu(cpu); if(entity.isUseHostCpuFlags()) { - cpu.setMode(CpuMode.HOST_PASSTHROUGH.value()); + model.getCpu().setMode(CpuMode.HOST_PASSTHROUGH.value()); } - cpu.setCpuTune(stringToCpuTune(entity.getCpuPinning())); - cpu.setTopology(topology); - model.setCpuShares(entity.getCpuShares()); + model.getCpu().setCpuTune(stringToCpuTune(entity.getCpuPinning())); - cpu.setArchitecture(CPUMapper.map(entity.getClusterArch(), null)); + model.getCpu().setArchitecture(CPUMapper.map(entity.getClusterArch(), null)); if (entity.getVmPoolId() != null) { VmPool pool = new VmPool(); @@ -519,7 +364,6 @@ model.getDisplay().setFileTransferEnabled(entity.isSpiceFileTransferEnabled()); model.getDisplay().setCopyPasteEnabled(entity.isSpiceCopyPasteEnabled()); } - model.setType(map(entity.getVmType(), null)); model.setStateless(entity.isStateless()); model.setDeleteProtected(entity.isDeleteProtected()); model.setSso(SsoMapper.map(entity.getSsoMethod(), null)); @@ -528,9 +372,6 @@ model.getHighAvailability().setPriority(entity.getPriority()); if (entity.getOrigin() != null) { model.setOrigin(map(entity.getOrigin(), null)); - } - if (entity.getVmCreationDate() != null) { - model.setCreationTime(DateMapper.map(entity.getVmCreationDate(), null)); } model.setPlacementPolicy(new VmPlacementPolicy()); if(entity.getDedicatedVmForVds() !=null){ @@ -544,43 +385,22 @@ MemoryPolicy policy = new MemoryPolicy(); policy.setGuaranteed((long)entity.getMinAllocatedMem() * (long)BYTES_PER_MB); model.setMemoryPolicy(policy); - model.setTimezone(entity.getTimeZone()); if (!StringUtils.isEmpty(entity.getCustomProperties())) { CustomProperties hooks = new CustomProperties(); hooks.getCustomProperty().addAll(CustomPropertiesParser.parse(entity.getCustomProperties(), false)); model.setCustomProperties(hooks); - } - if (entity.getUsbPolicy()!=null) { - Usb usb = new Usb(); - usb.setEnabled(UsbMapperUtils.getIsUsbEnabled(entity.getUsbPolicy())); - UsbType usbType = UsbMapperUtils.getUsbType(entity.getUsbPolicy()); - if (usbType != null) { - usb.setType(usbType.value()); - } - model.setUsb(usb); } if (entity.getQuotaId()!=null) { Quota quota = new Quota(); quota.setId(entity.getQuotaId().toString()); model.setQuota(quota); } - model.setTunnelMigration(entity.getTunnelMigration()); - model.setMigrationDowntime(mapNullToMinusOne(entity.getMigrationDowntime())); if (entity.getVmInit() != null) { model.setInitialization(map(entity.getVmInit(), null)); - if (entity.getVmInit().getDomain() != null) { - Domain domain = new Domain(); - domain.setName(entity.getVmInit().getDomain()); - model.setDomain(domain); - } - } - if (entity.getSerialNumberPolicy() != null) { - model.setSerialNumber(SerialNumberMapper.map(entity.getStaticData(), null)); } model.setNextRunConfigurationExists(entity.isNextRunConfigurationExists()); model.setNumaTuneMode(map(entity.getNumaTuneMode(), null)); - model.setStartPaused(entity.isRunAndPause()); return model; } @@ -717,18 +537,6 @@ } } - @Mapping(from = org.ovirt.engine.core.common.businessentities.VmType.class, to = String.class) - public static String map(org.ovirt.engine.core.common.businessentities.VmType type, String incoming) { - switch (type) { - case Desktop: - return VmType.DESKTOP.value(); - case Server: - return VmType.SERVER.value(); - default: - return null; - } - } - @Mapping(from = DisplayType.class, to = org.ovirt.engine.core.common.businessentities.DisplayType.class) public static org.ovirt.engine.core.common.businessentities.DisplayType map(DisplayType type, org.ovirt.engine.core.common.businessentities.DisplayType incoming) { switch(type) { @@ -760,11 +568,6 @@ } catch (IllegalArgumentException e) { return null; } - } - - @Mapping(from = OriginType.class, to = String.class) - public static String map(OriginType type, String incoming) { - return type.name().toLowerCase(); } @Mapping(from = ConfigurationType.class, to = org.ovirt.engine.core.common.businessentities.ConfigurationType.class) 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 60805f8..f7be2bc 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 @@ -243,7 +243,7 @@ @Test public void testMapOriginTypeRhev() { - String s = VmMapper.map(OriginType.RHEV, null); + String s = VmBaseMapper.map(OriginType.RHEV, null); assertEquals(s, "rhev"); OriginType s2 = VmMapper.map(s, OriginType.RHEV); assertEquals(s2, OriginType.RHEV); @@ -251,7 +251,7 @@ @Test public void testMapOriginTypeOvirt() { - String s = VmMapper.map(OriginType.OVIRT, null); + String s = VmBaseMapper.map(OriginType.OVIRT, null); assertEquals(s, "ovirt"); OriginType s2 = VmMapper.map(s, OriginType.OVIRT); assertEquals(s2, OriginType.OVIRT); -- To view, visit http://gerrit.ovirt.org/30189 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iddd80e10360234d75d142f224ecb8ad920fbf282 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Betak <mbe...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches