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
