Roy Golan has uploaded a new change for review.

Change subject: core: Fix and relax some parsing of VM structures
......................................................................

core: Fix and relax some parsing of VM structures

- Create a null-safe parsing method for VM architecture
- Parse int-value properties which could be int or String type so its
  compatible with "List" verb and "getVmFromExternalProvider" verbs
  responses.

Change-Id: I6332226aad841502e3eb7570fcb662e18ad5b647
Bug-Url: https://bugzilla.redhat.com/??????
Signed-off-by: Roy Golan <rgo...@redhat.com>
---
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
2 files changed, 28 insertions(+), 15 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/97/42297/1

diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java
index 1aecd85d..d63de90 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VmsMonitoring.java
@@ -331,8 +331,8 @@
                     vmStatic.setOrigin(OriginType.EXTERNAL);
                 }
 
-                
vmStatic.setNumOfSockets(parseIntVdsProperty(vmInfo.get(VdsProperties.num_of_cpus)));
-                
vmStatic.setMemSizeMb(parseIntVdsProperty(vmInfo.get(VdsProperties.mem_size_mb)));
+                
vmStatic.setNumOfSockets(VdsBrokerObjectsBuilder.parseIntVdsProperty(vmInfo.get(VdsProperties.num_of_cpus)));
+                
vmStatic.setMemSizeMb(VdsBrokerObjectsBuilder.parseIntVdsProperty(vmInfo.get(VdsProperties.mem_size_mb)));
                 vmStatic.setSingleQxlPci(false);
 
                 externalVmsToAdd.add(vmStatic);
@@ -578,16 +578,6 @@
     private static Guid getDeviceId(Map device) {
         String deviceId = (String) device.get(VdsProperties.DeviceId);
         return deviceId == null ? null : new Guid(deviceId);
-    }
-
-    // Some properties were changed recently from String to Integer
-    // This method checks what type is the property, and returns int
-    private int parseIntVdsProperty(Object vdsProperty) {
-        if (vdsProperty instanceof Integer) {
-            return (Integer) vdsProperty;
-        } else {
-            return Integer.parseInt((String) vdsProperty);
-        }
     }
 
     /**
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
index f953297..af06fdb 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
@@ -125,7 +125,8 @@
         for (DiskImage image : vm.getImages()) {
             vm.getDiskMap().put(Guid.newGuid(), image);
         }
-        vm.setClusterArch(ArchitectureType.valueOf((String) 
xmlRpcStruct.get(VdsProperties.vm_arch)));
+
+        vm.setClusterArch(parseArchitecture(xmlRpcStruct));
 
         return vm;
     }
@@ -216,8 +217,8 @@
         VmStatic vmStatic = new VmStatic();
         vmStatic.setId(Guid.createGuidFromString((String) 
xmlRpcStruct.get(VdsProperties.vm_guid)));
         vmStatic.setName((String) xmlRpcStruct.get(VdsProperties.vm_name));
-        vmStatic.setMemSizeMb((int) 
xmlRpcStruct.get(VdsProperties.mem_size_mb));
-        vmStatic.setNumOfSockets((int) 
xmlRpcStruct.get(VdsProperties.num_of_cpus));
+        
vmStatic.setMemSizeMb(parseIntVdsProperty(xmlRpcStruct.get(VdsProperties.mem_size_mb)));
+        
vmStatic.setNumOfSockets(parseIntVdsProperty(xmlRpcStruct.get(VdsProperties.num_of_cpus)));
 
         if (xmlRpcStruct.containsKey(VdsProperties.vm_disks)) {
             for (Object disk : (Object[]) 
xmlRpcStruct.get(VdsProperties.vm_disks)) {
@@ -648,6 +649,28 @@
         }
     }
 
+    /**
+     * Some properties were changed recently from String to Integer
+     * This method checks what type is the property, and returns int
+     * @param vdsProperty
+     * @return
+     */
+    public static int parseIntVdsProperty(Object vdsProperty) {
+        if (vdsProperty instanceof Integer) {
+            return (Integer) vdsProperty;
+        } else {
+            return Integer.parseInt((String) vdsProperty);
+        }
+    }
+
+    protected static ArchitectureType parseArchitecture(Map<String, Object> 
xmlRpcStruct) {
+        try {
+            return ArchitectureType.valueOf((String) 
xmlRpcStruct.get(VdsProperties.vm_arch));
+        } catch (NullPointerException e) {
+            return null;
+        }
+    }
+
     public static void updateVMStatisticsData(VmStatistics vm, Map<String, 
Object> xmlRpcStruct) {
         if (xmlRpcStruct.containsKey(VdsProperties.vm_guid)) {
             vm.setId(new Guid((String) 
xmlRpcStruct.get(VdsProperties.vm_guid)));


-- 
To view, visit https://gerrit.ovirt.org/42297
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6332226aad841502e3eb7570fcb662e18ad5b647
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Roy Golan <rgo...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to