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