Moti Asayag has uploaded a new change for review.

Change subject: engine: Process netIfaces element reported by VDSM
......................................................................

engine: Process netIfaces element reported by VDSM

The patch process netIfaces element which contains the network
devices of a VM as report by the guest agent.

It produces a list of VmGuestAgentInterfaces which will be saved
to the database in the next patch.

Change-Id: I0b7f396efbadb4e43c67c1706eee0eca47ab9eb8
Signed-off-by: Moti Asayag <masa...@redhat.com>
---
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java
3 files changed, 49 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/31/10231/1

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 4980be4..9a60d73 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
@@ -1296,9 +1296,50 @@
         }
     }
 
-    public static List<VmGuestAgentInterface> 
buildVmGuestAgentInterfacesData(XmlRpcStruct xmlRpcStruct) {
-        // TODO: implement
-        return null;
+    /**
+     * Creates a list of {@link VmGuestAgentInterface} from the {@link 
VdsProperties.GuestNetworkInterfaces}
+     *
+     * @param vmId
+     *            the Vm's ID which contains the interfaces
+     *
+     * @param xmlRpcStruct
+     *            the xml structure that describes the VM as reported by VDSM
+     * @return a list of {@link VmGuestAgentInterface} or null if no guest 
vNics were reported
+     */
+    public static List<VmGuestAgentInterface> 
buildVmGuestAgentInterfacesData(Guid vmId, XmlRpcStruct xmlRpcStruct) {
+        if (!xmlRpcStruct.contains(VdsProperties.VM_NETWORK_INTERFACES)) {
+            return null;
+        }
+
+        List<VmGuestAgentInterface> interfaces = new 
ArrayList<VmGuestAgentInterface>();
+        for (Object ifaceStruct : (Object[]) 
xmlRpcStruct.getItem(VdsProperties.VM_NETWORK_INTERFACES)) {
+            VmGuestAgentInterface nic = new VmGuestAgentInterface();
+            XmlRpcStruct ifaceMap = new XmlRpcStruct((Map) ifaceStruct);
+            nic.setInterfaceName(AssignStringValue(ifaceMap, 
VdsProperties.VM_INTERFACE_NAME));
+            nic.setMacAddress(AssignStringValue(ifaceMap, 
VdsProperties.VM_INTERFACE_MAC_ADDRESS));
+            nic.setIpv4Addresses(extracStringtList(ifaceMap, 
VdsProperties.VM_IPV4_ADDRESSES));
+            nic.setIpv6Addresses(extracStringtList(ifaceMap, 
VdsProperties.VM_IPV6_ADDRESSES));
+            nic.setVmId(vmId);
+            interfaces.add(nic);
+        }
+        return interfaces;
+    }
+
+    private static List<String> extracStringtList(XmlRpcStruct xmlRpcStruct, 
String propertyName) {
+        if (!xmlRpcStruct.contains(propertyName)){
+            return null;
+        }
+
+        Object[] items = (Object[]) xmlRpcStruct.getItem(propertyName);
+        if (items.length == 0) {
+            return null;
+        }
+
+        List<String> list = new ArrayList<String>();
+        for (Object item : items) {
+            list.add((String) item);
+        }
+        return list;
     }
 
     private static final Log log = 
LogFactory.getLog(VdsBrokerObjectsBuilder.class);
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
index f0dfc4a..eb04432 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
@@ -125,6 +125,10 @@
     public static final String NETWORK_BRIDGES = "bridges";
     public static final String network_lastclientinterface = "lastClientIface";
     public static final String NETWORK_INTERFACE = "iface";
+    public static final String VM_NETWORK_INTERFACES = "netIfaces";
+    public static final String VM_IPV4_ADDRESSES = "inet";
+    public static final String VM_IPV6_ADDRESSES = "inet6";
+    public static final String VM_INTERFACE_MAC_ADDRESS = "hw";
 
     // Disks usage configuration
     public static final String VM_DISKS_USAGE = "disksUsage";
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java
index a1f18fe..6a3120f 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmStatsVdsBrokerCommand.java
@@ -32,6 +32,6 @@
         VdsBrokerObjectsBuilder.updateVMDynamicData(vmDynamic, xmlRpcStruct);
         return new VmInternalData(vmDynamic,
                 VdsBrokerObjectsBuilder.buildVMStatisticsData(xmlRpcStruct),
-                
VdsBrokerObjectsBuilder.buildVmGuestAgentInterfacesData(xmlRpcStruct));
+                
VdsBrokerObjectsBuilder.buildVmGuestAgentInterfacesData(vmDynamic.getId(), 
xmlRpcStruct));
     }
 }


--
To view, visit http://gerrit.ovirt.org/10231
To unsubscribe, visit http://gerrit.ovirt.org/settings

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

Reply via email to