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

Reply via email to