Vinzenz Feenstra has uploaded a new change for review. Change subject: restapi: Implementation for GuestOsInfo and Timezone reporting ......................................................................
restapi: Implementation for GuestOsInfo and Timezone reporting This patch implements the restapi part to facilitate newly reported guest OS information by the guest agent. The guest OS information contains: - Type of OS (Windows/Linux) - Architecture of the OS (e.g. ppc, ppc64, x86, x86_64) - Version of the OS - Timezone and timezone offset configured in the OS Change-Id: I492d42248858fc653918a33e972734bd82be1eec Bug-Url: https://bugzilla.redhat.com/869296 Signed-off-by: Vinzenz Feenstra <vfeen...@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/VmMapper.java M backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java 3 files changed, 123 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/13/41813/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 a896dbb..5e512b1 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 @@ -3287,10 +3287,30 @@ </xs:sequence> </xs:complexType> + <xs:complexType name="GuestOs"> + <xs:sequence> + <xs:element name="arch" type="xs:string" minOccurs="1" maxOccurs="1"/> + <xs:element name="codename" type="xs:string" minOccurs="1" maxOccurs="1"/> + <xs:element name="distribution" type="xs:string" minOccurs="1" maxOccurs="1"/> + <xs:element name="kernel_version" type="xs:string" minOccurs="1" maxOccurs="1"/> + <xs:element name="type" type="xs:string" minOccurs="1" maxOccurs="1"/> + <xs:element name="version" type="xs:string" minOccurs="1" maxOccurs="1"/> + </xs:sequence> + </xs:complexType> + + <xs:complexType name="GuestTimezone"> + <xs:sequence> + <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/> + <xs:element name="offset" type="xs:int" minOccurs="1" maxOccurs="1"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="GuestInfo"> <xs:sequence> <xs:element ref="ips" minOccurs="0" maxOccurs="1"/> <xs:element name="fqdn" type="xs:string" minOccurs="0" maxOccurs="1"/> + <xs:element name="timezone" type="GuestTimezone" minOccurs="0" maxOccurs="1"/> + <xs:element name="guest_os" type="GuestOs" minOccurs="0" maxOccurs="1"/> </xs:sequence> </xs:complexType> 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 0cfe536..cee78dc 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 @@ -29,6 +29,8 @@ import org.ovirt.engine.api.model.GraphicsConsole; import org.ovirt.engine.api.model.GraphicsType; import org.ovirt.engine.api.model.GuestInfo; +import org.ovirt.engine.api.model.GuestOs; +import org.ovirt.engine.api.model.GuestTimezone; import org.ovirt.engine.api.model.GuestNicConfiguration; import org.ovirt.engine.api.model.GuestNicsConfiguration; import org.ovirt.engine.api.model.HighAvailability; @@ -377,7 +379,9 @@ } final boolean hasIps = entity.getVmIp() != null && !entity.getVmIp().isEmpty(); final boolean hasFqdn = entity.getVmFQDN() != null && !entity.getVmFQDN().isEmpty(); - if (hasIps || hasFqdn) { + final boolean hasGuestOsVersion = entity.getGuestOsVersion() != null && !entity.getGuestOsVersion().isEmpty(); + final boolean hasTimezoneName = entity.getGuestOsTimezoneName() != null && !entity.getGuestOsTimezoneName().isEmpty(); + if (hasIps || hasFqdn || hasGuestOsVersion || hasTimezoneName) { model.setGuestInfo(new GuestInfo()); if (hasFqdn) { @@ -397,7 +401,25 @@ model.getGuestInfo().setIps(ips); } } + + if (hasGuestOsVersion) { + GuestOs os = (new GuestOs()); + os.setArch(entity.getGuestOsArch().name()); + os.setCodename(entity.getGuestOsCodename()); + os.setDistribution(entity.getGuestOsDistribution()); + os.setKernelVersion(entity.getGuestOsKernelVersion()); + os.setVersion(entity.getGuestOsVersion()); + os.setType(entity.getGuestOsType().name()); + model.getGuestInfo().setGuestOs(os); + } + + if (hasTimezoneName) { + model.getGuestInfo().setTimezone(new GuestTimezone()); + model.getGuestInfo().getTimezone().setName(entity.getGuestOsTimezoneName()); + model.getGuestInfo().getTimezone().setOffset(entity.getGuestOsTimezoneOffset()); + } } + if (entity.getLastStartTime() != null) { model.setStartTime(DateMapper.map(entity.getLastStartTime(), null)); } 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 b406df6..219a91a 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 @@ -24,9 +24,11 @@ import org.ovirt.engine.api.model.VmPlacementPolicy; import org.ovirt.engine.api.model.VmType; import org.ovirt.engine.api.restapi.utils.OsTypeMockUtils; +import org.ovirt.engine.core.common.businessentities.ArchitectureType; import org.ovirt.engine.core.common.businessentities.GraphicsInfo; import org.ovirt.engine.core.common.businessentities.GraphicsType; import org.ovirt.engine.core.common.businessentities.OriginType; +import org.ovirt.engine.core.common.businessentities.OsType; import org.ovirt.engine.core.common.businessentities.UsbPolicy; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VMStatus; @@ -221,6 +223,84 @@ assertNotNull(map.getGuestInfo().getFqdn()); assertEquals(map.getGuestInfo().getFqdn(), "localhost.localdomain"); } + + @Test + public void testGuestTimezone() { + org.ovirt.engine.core.common.businessentities.VM vm = new org.ovirt.engine.core.common.businessentities.VM(); + VmDynamic vmDynamic = new VmDynamic(); + vmDynamic.setStatus(VMStatus.Up); + vmDynamic.setGuestOsTimezoneName("This is not a timezone"); + vmDynamic.setGuestOsTimezoneOffset(-6000); + vm.setDynamicData(vmDynamic); + VM map = VmMapper.map(vm, (VM) null); + assertNotNull(map.getGuestInfo()); + assertNotNull(map.getGuestInfo().getTimezone()); + assertEquals(map.getGuestInfo().getTimezone().getOffset().intValue(), -6000); + assertEquals(map.getGuestInfo().getTimezone().getName(), "This is not a timezone"); + } + + @Test + public void testGuestOs() { + org.ovirt.engine.core.common.businessentities.VM vm = new org.ovirt.engine.core.common.businessentities.VM(); + VmDynamic vmDynamic = new VmDynamic(); + vmDynamic.setStatus(VMStatus.Up); + + vmDynamic.setGuestOsType(OsType.Linux); + vmDynamic.setGuestOsCodename("Santiago"); + vmDynamic.setGuestOsDistribution("Red Hat Enterprise Linux Server"); + vmDynamic.setGuestOsVersion("6.5"); + vmDynamic.setGuestOsArch(ArchitectureType.x86_64); + vmDynamic.setGuestOsKernelVersion("2.6.32-431.el6.x86_64"); + + vm.setDynamicData(vmDynamic); + VM map = VmMapper.map(vm, (VM) null); + + assertNotNull(map.getGuestInfo().getGuestOs()); + assertEquals(map.getGuestInfo().getGuestOs().getType(), "Linux"); + assertEquals(map.getGuestInfo().getGuestOs().getCodename(), "Santiago"); + assertEquals(map.getGuestInfo().getGuestOs().getDistribution(), "Red Hat Enterprise Linux Server"); + assertEquals(map.getGuestInfo().getGuestOs().getVersion(), "6.5"); + assertEquals(map.getGuestInfo().getGuestOs().getArch(), "x86_64"); + assertEquals(map.getGuestInfo().getGuestOs().getKernelVersion(), "2.6.32-431.el6.x86_64"); + } + + @Test + public void testGuestOs2() { + org.ovirt.engine.core.common.businessentities.VM vm = new org.ovirt.engine.core.common.businessentities.VM(); + VmDynamic vmDynamic = new VmDynamic(); + vmDynamic.setStatus(VMStatus.Up); + + vmDynamic.setGuestOsType(OsType.Windows); + vmDynamic.setGuestOsCodename(""); + vmDynamic.setGuestOsDistribution(""); + vmDynamic.setGuestOsVersion("6.2"); + vmDynamic.setGuestOsArch(ArchitectureType.x86_64); + vmDynamic.setGuestOsKernelVersion(""); + + vm.setDynamicData(vmDynamic); + VM map = VmMapper.map(vm, (VM) null); + + assertNotNull(map.getGuestInfo().getGuestOs()); + assertEquals(map.getGuestInfo().getGuestOs().getType(), "Windows"); + assertEquals(map.getGuestInfo().getGuestOs().getCodename(), ""); + assertEquals(map.getGuestInfo().getGuestOs().getDistribution(), ""); + assertEquals(map.getGuestInfo().getGuestOs().getVersion(), "6.2"); + assertEquals(map.getGuestInfo().getGuestOs().getArch(), "x86_64"); + assertEquals(map.getGuestInfo().getGuestOs().getKernelVersion(), ""); + } + + @Test + public void testGuestOs3() { + org.ovirt.engine.core.common.businessentities.VM vm = new org.ovirt.engine.core.common.businessentities.VM(); + VmDynamic vmDynamic = new VmDynamic(); + vmDynamic.setStatus(VMStatus.Up); + + vm.setDynamicData(vmDynamic); + VM map = VmMapper.map(vm, (VM) null); + + assertNull(map.getGuestInfo()); + } + @Test public void testGustIps() { org.ovirt.engine.core.common.businessentities.VM vm = new org.ovirt.engine.core.common.businessentities.VM(); -- To view, visit https://gerrit.ovirt.org/41813 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I492d42248858fc653918a33e972734bd82be1eec Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Vinzenz Feenstra <vfeen...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches