Muli Salem has uploaded a new change for review.

Change subject: restapi: Guest Agent Network Devices of Nic (WIP)
......................................................................

restapi: Guest Agent Network Devices of Nic (WIP)

This patch adds the Guest Agent information to
a Nic, according to the feature design in:
http://www.ovirt.org/Feature/ReportingVnicInformation.

The nic holds a list of reported devices according
to mac address.

Change-Id: Ieb968da0b0ea5eecb3ad5e2670224cb9b6d0c360
Signed-off-by: Muli Salem <[email protected]>
---
M 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNicResource.java
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNicResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNicsResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplateNicsResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmNicResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmNicsResource.java
7 files changed, 88 insertions(+), 49 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/71/10371/1

diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNicResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNicResource.java
index dd2bfac..0b3770b 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNicResource.java
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmNicResource.java
@@ -44,4 +44,7 @@
     @Formatted
     @Override
     public NIC get();
+
+    @Path("reported_devices")
+    public VmReportedDevicesResource getVmReportedDevicesResource();
 }
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 e2a0960..9a942b7 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
@@ -2325,6 +2325,7 @@
           <xs:element name="statistics" type="Statistics" minOccurs="0" 
maxOccurs="1"/>
           <xs:element name="active" type="xs:boolean" minOccurs="0"/>
           <xs:element ref="port_mirroring" minOccurs="0" maxOccurs="1"/>
+          <xs:element ref="reported_devices" minOccurs="0" maxOccurs="1"/>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNicResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNicResource.java
index 4decc56..3d1f35a 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNicResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNicResource.java
@@ -1,14 +1,12 @@
 package org.ovirt.engine.api.restapi.resource;
 
-import static 
org.ovirt.engine.api.restapi.resource.BackendNicsResource.SUB_COLLECTIONS;
-
 import org.ovirt.engine.api.model.NIC;
 import org.ovirt.engine.api.model.Nics;
 import org.ovirt.engine.api.resource.NicResource;
 import org.ovirt.engine.api.resource.StatisticsResource;
 import org.ovirt.engine.core.common.action.VdcActionType;
-import org.ovirt.engine.core.common.businessentities.VmNetworkInterface;
 import org.ovirt.engine.core.common.businessentities.Network;
+import org.ovirt.engine.core.common.businessentities.VmNetworkInterface;
 import org.ovirt.engine.core.compat.Guid;
 
 
@@ -27,7 +25,7 @@
               updateType,
               updateParametersProvider,
               requiredUpdateFields,
-              SUB_COLLECTIONS);
+              subCollections);
     }
 
     @Override
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNicsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNicsResource.java
index 05f66a4..e016f49 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNicsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendNicsResource.java
@@ -6,9 +6,9 @@
 import javax.ws.rs.core.Response;
 
 import org.ovirt.engine.api.model.NIC;
-import org.ovirt.engine.api.model.Nics;
 import org.ovirt.engine.api.model.Network;
 import org.ovirt.engine.api.model.Networks;
+import org.ovirt.engine.api.model.Nics;
 import org.ovirt.engine.api.model.PortMirroring;
 import org.ovirt.engine.api.resource.DevicesResource;
 import org.ovirt.engine.core.common.action.VdcActionType;
@@ -25,21 +25,22 @@
     static final String SUB_COLLECTIONS = "statistics";
 
     public BackendNicsResource(Guid parentId,
-                               VdcQueryType queryType,
-                               VdcQueryParametersBase queryParams,
-                               VdcActionType addAction,
-                               VdcActionType removeAction,
-                               VdcActionType updateAction) {
+            VdcQueryType queryType,
+            VdcQueryParametersBase queryParams,
+            VdcActionType addAction,
+            VdcActionType removeAction,
+            VdcActionType updateAction,
+            String... subCollections) {
         super(NIC.class,
-              Nics.class,
-              VmNetworkInterface.class,
-              parentId,
-              queryType,
-              queryParams,
-              addAction,
-              removeAction,
-              updateAction,
-              SUB_COLLECTIONS);
+                Nics.class,
+                VmNetworkInterface.class,
+                parentId,
+                queryType,
+                queryParams,
+                addAction,
+                removeAction,
+                updateAction,
+                subCollections);
     }
 
     @Override
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplateNicsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplateNicsResource.java
index 28f9c73..85467fe 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplateNicsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendTemplateNicsResource.java
@@ -1,22 +1,21 @@
 package org.ovirt.engine.api.restapi.resource;
 
-import org.ovirt.engine.core.common.action.AddVmTemplateInterfaceParameters;
-import org.ovirt.engine.core.common.action.RemoveVmTemplateInterfaceParameters;
-import org.ovirt.engine.core.common.action.VdcActionParametersBase;
-import org.ovirt.engine.core.common.action.VdcActionType;
-import org.ovirt.engine.core.common.businessentities.VmNetworkInterface;
-import org.ovirt.engine.core.common.businessentities.VmTemplate;
-import org.ovirt.engine.core.common.businessentities.Network;
-import org.ovirt.engine.core.common.queries.GetVmTemplateParameters;
-import org.ovirt.engine.core.common.queries.VdcQueryType;
-import org.ovirt.engine.core.compat.Guid;
-import 
org.ovirt.engine.api.restapi.resource.AbstractBackendSubResource.ParametersProvider;
-
 import org.ovirt.engine.api.model.NIC;
 import org.ovirt.engine.api.model.Nics;
 import org.ovirt.engine.api.model.Template;
 import org.ovirt.engine.api.resource.DeviceResource;
 import org.ovirt.engine.api.resource.DevicesResource;
+import 
org.ovirt.engine.api.restapi.resource.AbstractBackendSubResource.ParametersProvider;
+import org.ovirt.engine.core.common.action.AddVmTemplateInterfaceParameters;
+import org.ovirt.engine.core.common.action.RemoveVmTemplateInterfaceParameters;
+import org.ovirt.engine.core.common.action.VdcActionParametersBase;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.businessentities.Network;
+import org.ovirt.engine.core.common.businessentities.VmNetworkInterface;
+import org.ovirt.engine.core.common.businessentities.VmTemplate;
+import org.ovirt.engine.core.common.queries.GetVmTemplateParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.compat.Guid;
 
 public class BackendTemplateNicsResource
             extends BackendNicsResource
@@ -28,7 +27,8 @@
               new GetVmTemplateParameters(parentId),
               VdcActionType.AddVmTemplateInterface,
               VdcActionType.RemoveVmTemplateInterface,
-              VdcActionType.UpdateVmTemplateInterface);
+                VdcActionType.UpdateVmTemplateInterface,
+                SUB_COLLECTIONS);
     }
 
     @Override
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmNicResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmNicResource.java
index fae39a3..c810ecc 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmNicResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmNicResource.java
@@ -1,24 +1,39 @@
 package org.ovirt.engine.api.restapi.resource;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Response;
 
+import org.apache.commons.lang.StringUtils;
+import org.ovirt.engine.api.common.util.LinkHelper;
 import org.ovirt.engine.api.model.Action;
+import org.ovirt.engine.api.model.Device;
 import org.ovirt.engine.api.model.Fault;
 import org.ovirt.engine.api.model.NIC;
+import org.ovirt.engine.api.model.Network;
+import org.ovirt.engine.api.model.Networks;
 import org.ovirt.engine.api.model.Nics;
+import org.ovirt.engine.api.model.PortMirroring;
+import org.ovirt.engine.api.model.ReportedDevices;
 import org.ovirt.engine.api.resource.ActionResource;
 import org.ovirt.engine.api.resource.VmNicResource;
+import org.ovirt.engine.api.resource.VmReportedDevicesResource;
+import org.ovirt.engine.api.restapi.types.DeviceMapper;
 import org.ovirt.engine.core.common.action.ActivateDeactivateVmNicParameters;
 import org.ovirt.engine.core.common.action.PlugAction;
 import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.businessentities.VmGuestAgentInterface;
 import org.ovirt.engine.core.common.businessentities.VmNetworkInterface;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
-import org.ovirt.engine.api.model.Network;
-import org.ovirt.engine.api.model.Networks;
-import org.ovirt.engine.api.model.PortMirroring;
 
 public class BackendVmNicResource extends BackendNicResource implements 
VmNicResource {
+
+    static final String[] SUB_COLLECTIONS = { "statistics", "reported_devices" 
};
 
     protected BackendVmNicResource(String id,
                                    AbstractBackendReadOnlyDevicesResource<NIC, 
Nics, VmNetworkInterface> collection,
@@ -26,7 +41,7 @@
                                    ParametersProvider<NIC, VmNetworkInterface> 
updateParametersProvider,
                                    String[] requiredUpdateFields,
                                    String[] subCollections) {
-        super(id, collection, updateType, updateParametersProvider, 
requiredUpdateFields, subCollections);
+        super(id, collection, updateType, updateParametersProvider, 
requiredUpdateFields, SUB_COLLECTIONS);
     }
 
     @Override
@@ -47,6 +62,9 @@
             portMirroring.getNetworks().getNetworks().add(net);
             model.setPortMirroring(portMirroring);
         }
+        ReportedDevices reportedDevices = new ReportedDevices();
+        
reportedDevices.getReportedDevices().addAll(getDevices(entity.getVmId().getValue(),
 entity.getMacAddress()));
+        model.setReportedDevices(reportedDevices);
         return parent.addStatistics(model, entity, uriInfo, httpHeaders);
     }
 
@@ -113,6 +131,19 @@
         return null;
     }
 
+    @SuppressWarnings("unchecked")
+    public List<Device> getDevices(Guid vmId, String mac) {
+        VdcQueryReturnValue result =
+                runQuery(VdcQueryType.GetVmGuestAgentInterfacesByVmId, new 
IdQueryParameters(vmId));
+        List<Device> devices = new ArrayList<Device>();
+        for (VmGuestAgentInterface iface : (List<VmGuestAgentInterface>) 
result.getReturnValue()) {
+            if (StringUtils.equals(iface.getMacAddress(), mac)) {
+                devices.add(LinkHelper.addLinks(getUriInfo(), 
DeviceMapper.map(iface, new Device())));
+            }
+        }
+        return devices;
+    }
+
     @Override
     public ActionResource getActionSubresource(String action, String oid) {
         return null;
@@ -137,4 +168,9 @@
     public NIC get() {
         return super.get();//explicit call solves REST-Easy confusion
     }
+
+    @Override
+    public VmReportedDevicesResource getVmReportedDevicesResource() {
+        return inject(new BackendVmReportedDevicesResource(guid));
+    }
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmNicsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmNicsResource.java
index 89ef3d4..5e1e29a 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmNicsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmNicsResource.java
@@ -7,6 +7,15 @@
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
+import org.ovirt.engine.api.common.util.DetailHelper;
+import org.ovirt.engine.api.common.util.LinkHelper;
+import org.ovirt.engine.api.model.Fault;
+import org.ovirt.engine.api.model.NIC;
+import org.ovirt.engine.api.model.Statistic;
+import org.ovirt.engine.api.model.Statistics;
+import org.ovirt.engine.api.resource.VmNicResource;
+import org.ovirt.engine.api.resource.VmNicsResource;
+import 
org.ovirt.engine.api.restapi.resource.AbstractBackendSubResource.ParametersProvider;
 import org.ovirt.engine.core.common.action.AddVmInterfaceParameters;
 import org.ovirt.engine.core.common.action.RemoveVmInterfaceParameters;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
@@ -17,20 +26,10 @@
 import org.ovirt.engine.core.common.queries.GetVmByVmIdParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
-import 
org.ovirt.engine.api.restapi.resource.AbstractBackendSubResource.ParametersProvider;
 
-import org.ovirt.engine.api.common.util.DetailHelper;
-import org.ovirt.engine.api.common.util.LinkHelper;
-import org.ovirt.engine.api.model.Fault;
-import org.ovirt.engine.api.model.NIC;
-import org.ovirt.engine.api.model.Statistic;
-import org.ovirt.engine.api.model.Statistics;
-import org.ovirt.engine.api.resource.VmNicResource;
-import org.ovirt.engine.api.resource.VmNicsResource;
+public class BackendVmNicsResource extends BackendNicsResource implements 
VmNicsResource {
 
-public class BackendVmNicsResource
-             extends BackendNicsResource
-        implements VmNicsResource {
+    static final String[] SUB_COLLECTIONS = { "statistics", "reported_devices" 
};
 
     public BackendVmNicsResource(Guid parentId) {
         super(parentId,
@@ -38,7 +37,8 @@
               new GetVmByVmIdParameters(parentId),
               VdcActionType.AddVmInterface,
               VdcActionType.RemoveVmInterface,
-              VdcActionType.UpdateVmInterface);
+                VdcActionType.UpdateVmInterface,
+                SUB_COLLECTIONS);
     }
 
     @Override


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ieb968da0b0ea5eecb3ad5e2670224cb9b6d0c360
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Muli Salem <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to