Martin Mucha has uploaded a new change for review.

Change subject: purgatory with sadistic rest architecture
......................................................................

purgatory with sadistic rest architecture

Even if you think, and it seems so, that you cargoculted everything
just fine, and then spend half of day git grepping for answer, there's
still some well hidden gotcha laughing at you from distance: "haha, your
request is wrong, it should look exacly like yours, to the single last
letter."

What's wrong with it then??

"hihihi."

Change-Id: Idcf6e1292ce6f3a335051123be8c3389e8230bf0
Bug-Url: https://bugzilla.redhat.com/??????
Signed-off-by: Martin Mucha <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/GetAllUnmanagedNetworksByVdsIdQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostSetupNetworksParameters.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/UnmanagedNetworkBusinessEntity.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
M 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
A 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/UnmanagedNetworkResource.java
A 
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/UnmanagedNetworksResource.java
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M 
backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostNetworkAttachmentsResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
A 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUnmanagedNetworkResource.java
A 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUnmanagedNetworksResource.java
A 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/UnmanagedNetworkMapper.java
16 files changed, 414 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/25/37525/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/GetAllUnmanagedNetworksByVdsIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/GetAllUnmanagedNetworksByVdsIdQuery.java
new file mode 100644
index 0000000..682c0ba
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/GetAllUnmanagedNetworksByVdsIdQuery.java
@@ -0,0 +1,49 @@
+package org.ovirt.engine.core.bll.network.cluster;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.ovirt.engine.core.bll.QueriesCommandBase;
+import org.ovirt.engine.core.common.businessentities.BusinessEntityMap;
+import 
org.ovirt.engine.core.common.businessentities.UnmanagedNetworkBusinessEntity;
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.network.Network;
+import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.network.InterfaceDao;
+import org.ovirt.engine.core.dao.network.NetworkDao;
+
+public class GetAllUnmanagedNetworksByVdsIdQuery<P extends IdQueryParameters> 
extends QueriesCommandBase<P> {
+    public GetAllUnmanagedNetworksByVdsIdQuery(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        Guid vdsId = getParameters().getId();
+        VDS vds = getVdsDao().get(vdsId);
+        InterfaceDao interfaceDao = getDbFacade().getInterfaceDao();
+        List<VdsNetworkInterface> vdsNetworkInterfaces = 
interfaceDao.getAllInterfacesForVds(vdsId);
+
+        Guid clusterId = vds.getVdsGroupId();
+        NetworkDao networkDao = getDbFacade().getNetworkDao();
+        List<Network> clusterNetworks = networkDao.getAllForCluster(clusterId);
+        BusinessEntityMap<Network> clusterNetworkMap = new 
BusinessEntityMap<>(clusterNetworks);
+
+        List<UnmanagedNetworkBusinessEntity> unmanagedNetworkNames = new 
ArrayList<>();
+        for (VdsNetworkInterface vdsNetworkInterface : vdsNetworkInterfaces) {
+            String networkName = vdsNetworkInterface.getNetworkName();
+            if (networkName != null && 
!clusterNetworkMap.containsKey(networkName)) {
+                Network networkByName = networkDao.getByName(networkName);
+                UnmanagedNetworkBusinessEntity unmanagedNetwork = new 
UnmanagedNetworkBusinessEntity()
+                        .setNetworkName(networkName)
+                        .setNicId(vdsNetworkInterface.getId())
+                        .setNicName(vdsNetworkInterface.getName());
+                unmanagedNetworkNames.add(unmanagedNetwork);
+            }
+        }
+
+        getQueryReturnValue().setReturnValue(unmanagedNetworkNames);
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java
index 988d331..9c4829f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/HostSetupNetworksCommand.java
@@ -63,6 +63,7 @@
     private BusinessEntityMap<Network> networkBusinessEntityMap;
 
     private Set<String> removedNetworks;
+    private Set<String> removedUnmanagedNetworks;
     private Set<String> removedBonds;
     private List<VdsNetworkInterface> existingNics;
     private List<NetworkAttachment> existingAttachments;
@@ -227,14 +228,22 @@
         final HostSetupNetworksVdsCommandParameters hostCmdParams = new 
HostSetupNetworksVdsCommandParameters(
                 getVds(),
                 getNetworks(),
-                getRemovedNetworks(),
+                getAllNetworksToRemove(),
                 getParameters().getBonds(),
                 getRemovedBonds());
+
         
hostCmdParams.setRollbackOnFailure(getParameters().rollbackOnFailure());
         hostCmdParams.setConectivityTimeout(timeout);
         boolean hostNetworkQosSupported = 
FeatureSupported.hostNetworkQos(getVds().getVdsGroupCompatibilityVersion());
         hostCmdParams.setHostNetworkQosSupported(hostNetworkQosSupported);
         return hostCmdParams;
+    }
+
+    private Set<String> getAllNetworksToRemove() {
+        Set<String> result = new HashSet<>(getRemovedNetworks().size() + 
getRemovedUnmanagedNetworks().size());
+        result.addAll(getRemovedNetworks());
+        result.addAll(getRemovedUnmanagedNetworks());
+        return result;
     }
 
     protected Integer getSetupNetworksTimeout() {
@@ -303,6 +312,14 @@
         return removedNetworks;
     }
 
+    private Set<String> getRemovedUnmanagedNetworks() {
+        if (removedUnmanagedNetworks == null) {
+//            this.removedUnmanagedNetworks = new 
HashSet<>(getParameters().getRemovedUnmanagedNetworks());
+        }
+
+        return removedUnmanagedNetworks;
+    }
+
     private List<HostNetwork> getNetworks() {
         if (networksToConfigure == null) {
             networksToConfigure = new 
ArrayList<>(getParameters().getNetworkAttachments().size());
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostSetupNetworksParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostSetupNetworksParameters.java
index ed164fa..2689c43 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostSetupNetworksParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostSetupNetworksParameters.java
@@ -41,6 +41,7 @@
         setRemovedNetworkAttachments(new ArrayList<NetworkAttachment>());
         setBonds(new ArrayList<Bond>());
         setRemovedBonds(new ArrayList<Bond>());
+//        setRemovedUnmanagedNetworks(new ArrayList<String>());
     }
 
     public boolean rollbackOnFailure() {
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/UnmanagedNetworkBusinessEntity.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/UnmanagedNetworkBusinessEntity.java
new file mode 100644
index 0000000..96e1712
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/UnmanagedNetworkBusinessEntity.java
@@ -0,0 +1,76 @@
+package org.ovirt.engine.core.common.businessentities;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class UnmanagedNetworkBusinessEntity extends IVdcQueryable implements 
BusinessEntity<String> {
+
+    private static final long serialVersionUID = -7952435653821354188L;
+
+    private String networkName;
+    private String nicName;
+    private Guid nicId;
+
+    @Override
+    public String getId() {
+        return getNetworkName();
+    }
+
+    @Override
+    public void setId(String id) {
+        setNetworkName(id);
+    }
+
+    public String getNetworkName() {
+        return networkName;
+    }
+
+    public UnmanagedNetworkBusinessEntity setNetworkName(String networkName) {
+        this.networkName = networkName;
+        return this;
+    }
+
+    public String getNicName() {
+        return nicName;
+    }
+
+    public UnmanagedNetworkBusinessEntity setNicName(String nicName) {
+        this.nicName = nicName;
+        return this;
+    }
+
+    public Guid getNicId() {
+        return nicId;
+    }
+
+    public UnmanagedNetworkBusinessEntity setNicId(Guid nicId) {
+        this.nicId = nicId;
+        return this;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o)
+            return true;
+        if (!(o instanceof UnmanagedNetworkBusinessEntity))
+            return false;
+
+        UnmanagedNetworkBusinessEntity that = (UnmanagedNetworkBusinessEntity) 
o;
+
+        if (networkName != null ? !networkName.equals(that.networkName) : 
that.networkName != null)
+            return false;
+        if (nicId != null ? !nicId.equals(that.nicId) : that.nicId != null)
+            return false;
+        if (nicName != null ? !nicName.equals(that.nicName) : that.nicName != 
null)
+            return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = networkName != null ? networkName.hashCode() : 0;
+        result = 31 * result + (nicName != null ? nicName.hashCode() : 0);
+        result = 31 * result + (nicId != null ? nicId.hashCode() : 0);
+        return result;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
index 4479492..a67b9e3 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
@@ -64,6 +64,7 @@
     GetVdsFreeBondsByVdsId,
     GetAllNetworks(VdcQueryAuthType.User),
     GetAllNetworksByClusterId(VdcQueryAuthType.User),
+    GetAllUnmanagedNetworksByVdsId(VdcQueryAuthType.User),
     GetNetworksByDataCenterId(VdcQueryAuthType.User),
     GetAllNetworksByQosId,
     GetManagementInterfaceAddressByVmId(VdcQueryAuthType.User),
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
index 3e85aa5..387bddb 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
@@ -99,6 +99,9 @@
     @Path("permissions")
     public AssignedPermissionsResource getPermissionsResource();
 
+    @Path("unmanagednetworks")
+    public UnmanagedNetworksResource getUnmanagedNetworks();
+
     @POST
     @Consumes({ ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML })
     @Actionable
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/UnmanagedNetworkResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/UnmanagedNetworkResource.java
new file mode 100644
index 0000000..83264d9
--- /dev/null
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/UnmanagedNetworkResource.java
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2010 Red Hat, Inc.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*           http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.ovirt.engine.api.resource;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Produces;
+
+import org.ovirt.engine.api.model.UnmanagedNetwork;
+
+@Produces({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML})
+public interface UnmanagedNetworkResource {
+
+    @GET
+    public UnmanagedNetwork get();
+}
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/UnmanagedNetworksResource.java
 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/UnmanagedNetworksResource.java
new file mode 100644
index 0000000..c64e142
--- /dev/null
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/UnmanagedNetworksResource.java
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2010 Red Hat, Inc.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*           http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.ovirt.engine.api.resource;
+
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Response;
+
+import org.ovirt.engine.api.model.UnmanagedNetworks;
+
+@Produces({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON, 
ApiMediaType.APPLICATION_X_YAML})
+public interface UnmanagedNetworksResource {
+
+    @GET
+    public UnmanagedNetworks list();
+
+    @DELETE
+    @Path("{id}")
+    public Response remove(@PathParam("id") String id);
+
+    @Path("{id}")
+    public UnmanagedNetworkResource 
getUnmanagedNetworkSubResource(@PathParam("id") String id);
+}
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 f051c86..3646ee8 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
@@ -3781,6 +3781,36 @@
     </xs:complexContent>
   </xs:complexType>
 
+    <xs:complexType name="UnmanagedNetworks">
+        <xs:complexContent>
+            <xs:extension base="BaseResources">
+                <xs:sequence>
+                    <xs:element name="unmanaged_network" 
type="UnmanagedNetwork" maxOccurs="unbounded">
+                        <xs:annotation>
+                            <xs:appinfo>
+                                <jaxb:property name="unmanagedNetworks"/>
+                            </xs:appinfo>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+  </xs:complexType>
+
+    <xs:complexType name="UnmanagedNetwork">
+        <xs:complexContent>
+            <xs:extension base="BaseResource">
+                <xs:sequence>
+                    <xs:element name="unmanaged_network_name" 
type="xs:string"/>
+                    <xs:element name="nic_name" type="xs:string" 
minOccurs="0"/>
+                    <xs:element name="nic_id" type="xs:string" minOccurs="0"/>
+                </xs:sequence>
+            </xs:extension>
+
+        </xs:complexContent>
+
+    </xs:complexType>
+
   <xs:complexType name="HostNics">
     <xs:complexContent>
       <xs:extension base="BaseResources">
diff --git 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
index 00d97cc..90f647b 100644
--- 
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
+++ 
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
@@ -3384,6 +3384,34 @@
       Content-Type: {value: application/xml|json, required: true}
       Expect: {value: 201-created, required: false}
       Correlation-Id: {value: 'any string', required: false}
+- name: /hosts/{host:id}/unmanagednetworks|rel=get
+  description: get a list of unmanaged networks
+  request:
+    body:
+      parameterType: null
+      signatures: []
+    urlparams: []
+#      max: {context: matrix, type: 'xs:int', value: 'max results', required: 
false}
+    headers: {}
+- name: /hosts/{host:id}/unmanagednetworks/{unmanagednetwork:id}|rel=get
+  description: get the details of the specified unmanaged network
+  request:
+    body:
+      parameterType: null
+      signatures: []
+    urlparams: {}
+    headers: {}
+- name: /hosts/{host:id}/unmanagednetworks/{unmanagednetwork:id}|rel=delete
+  description: delete the specified unmanaged network
+  request:
+    body:
+      required: false
+      parameterType: Action
+      signatures: []
+    urlparams:
+      async: {context: matrix, type: 'xs:boolean', value: true|false, 
required: false}
+    headers:
+      Correlation-Id: {value: 'any string', required: false}
 - name: /hosts/{host:id}/permissions|rel=get
   description: get the list of permissions for the host
   request:
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostNetworkAttachmentsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostNetworkAttachmentsResource.java
index a8cbd03..a22501f 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostNetworkAttachmentsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostNetworkAttachmentsResource.java
@@ -12,7 +12,7 @@
 
 public class BackendHostNetworkAttachmentsResource extends 
AbstractBackendNetworkAttachmentsResource {
 
-    public BackendHostNetworkAttachmentsResource(Guid hostId) {
+    public  BackendHostNetworkAttachmentsResource(Guid hostId) {
         super(hostId);
     }
 
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
index 66c7201..1a8a82f 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
@@ -29,6 +29,7 @@
 import org.ovirt.engine.api.resource.HostStorageResource;
 import org.ovirt.engine.api.resource.NetworkAttachmentsResource;
 import org.ovirt.engine.api.resource.StatisticsResource;
+import org.ovirt.engine.api.resource.UnmanagedNetworksResource;
 import org.ovirt.engine.api.restapi.model.AuthenticationMethod;
 import org.ovirt.engine.api.restapi.types.Mapper;
 import org.ovirt.engine.core.common.VdcObjectType;
@@ -436,6 +437,11 @@
     }
 
     @Override
+    public UnmanagedNetworksResource getUnmanagedNetworks() {
+        return inject(new BackendUnmanagedNetworksResource(id));
+    }
+
+    @Override
     public NetworkAttachmentsResource getNetworkAttachmentsResource() {
         return inject(new BackendHostNetworkAttachmentsResource(guid));
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
index 6779f2d..43ab24a 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
@@ -41,7 +41,7 @@
     private static final Logger log = 
LoggerFactory.getLogger(BackendHostsResource.class);
     private static final String DEFAULT_NAME = "Default";
     static final String[] SUB_COLLECTIONS = { "storage", "nics", "numanodes", 
"tags", "permissions", "statistics",
-            "hooks", "networkattachments" };
+            "hooks", "networkattachments", "unmanagednetworks" };
     static final String GLUSTERONLY_MODE_COLLECTIONS_TO_HIDE = "storage";
 
     public BackendHostsResource() {
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUnmanagedNetworkResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUnmanagedNetworkResource.java
new file mode 100644
index 0000000..0a5911c
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUnmanagedNetworkResource.java
@@ -0,0 +1,23 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import org.ovirt.engine.api.model.UnmanagedNetwork;
+import org.ovirt.engine.api.resource.UnmanagedNetworkResource;
+import 
org.ovirt.engine.core.common.businessentities.UnmanagedNetworkBusinessEntity;
+
+public class BackendUnmanagedNetworkResource extends 
AbstractBackendSubResource<UnmanagedNetwork,
+        UnmanagedNetworkBusinessEntity> implements UnmanagedNetworkResource {
+
+    public BackendUnmanagedNetworkResource(String id) {
+        super(id, UnmanagedNetwork.class, 
UnmanagedNetworkBusinessEntity.class);
+    }
+
+    @Override
+    protected UnmanagedNetwork doPopulate(UnmanagedNetwork model, 
UnmanagedNetworkBusinessEntity entity) {
+        return model;
+    }
+
+    @Override
+    public UnmanagedNetwork get() {
+        throw new UnsupportedOperationException("Not implemented yet");
+    }
+}
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUnmanagedNetworksResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUnmanagedNetworksResource.java
new file mode 100644
index 0000000..b5fa316
--- /dev/null
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUnmanagedNetworksResource.java
@@ -0,0 +1,56 @@
+package org.ovirt.engine.api.restapi.resource;
+
+import java.util.List;
+
+import javax.ws.rs.core.Response;
+
+import org.ovirt.engine.api.model.UnmanagedNetwork;
+import org.ovirt.engine.api.model.UnmanagedNetworks;
+import org.ovirt.engine.api.resource.UnmanagedNetworkResource;
+import org.ovirt.engine.api.resource.UnmanagedNetworksResource;
+import 
org.ovirt.engine.core.common.businessentities.UnmanagedNetworkBusinessEntity;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.compat.Guid;
+
+public class BackendUnmanagedNetworksResource extends 
AbstractBackendCollectionResource<UnmanagedNetwork, 
UnmanagedNetworkBusinessEntity>
+        implements UnmanagedNetworksResource {
+
+    private String hostId;
+
+    public BackendUnmanagedNetworksResource(String hostId) {
+        super(UnmanagedNetwork.class, UnmanagedNetworkBusinessEntity.class);
+        this.hostId = hostId;
+    }
+
+    @Override
+    public UnmanagedNetworks list() {
+        return 
mapCollection(getBackendCollection(VdcQueryType.GetAllUnmanagedNetworksByVdsId,
+                new 
IdQueryParameters(Guid.createGuidFromStringDefaultEmpty(hostId))));
+    }
+
+    private UnmanagedNetworks 
mapCollection(List<UnmanagedNetworkBusinessEntity> unmanagedNetworks) {
+        UnmanagedNetworks result = new UnmanagedNetworks();
+        for (UnmanagedNetworkBusinessEntity unmanagedNetwork : 
unmanagedNetworks) {
+            result.getUnmanagedNetworks().add(map(unmanagedNetwork));
+        }
+        return result;
+    }
+
+    @SingleEntityResource
+    @Override
+    public UnmanagedNetworkResource getUnmanagedNetworkSubResource(String id) {
+        return inject(new BackendUnmanagedNetworkResource(id));
+
+    }
+
+    @Override
+    protected Response performRemove(String id) {
+        throw new UnsupportedOperationException("Not implemented yet");
+    }
+
+    @Override
+    protected UnmanagedNetwork doPopulate(UnmanagedNetwork model, 
UnmanagedNetworkBusinessEntity entity) {
+        return model;
+    }
+}
diff --git 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/UnmanagedNetworkMapper.java
 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/UnmanagedNetworkMapper.java
new file mode 100644
index 0000000..4fd9bdb
--- /dev/null
+++ 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/UnmanagedNetworkMapper.java
@@ -0,0 +1,52 @@
+package org.ovirt.engine.api.restapi.types;
+
+import org.ovirt.engine.api.model.UnmanagedNetwork;
+import 
org.ovirt.engine.core.common.businessentities.UnmanagedNetworkBusinessEntity;
+import org.ovirt.engine.core.compat.Guid;
+
+public class UnmanagedNetworkMapper {
+    @Mapping(from = UnmanagedNetwork.class, to = 
UnmanagedNetworkBusinessEntity.class)
+    public static UnmanagedNetworkBusinessEntity map(UnmanagedNetwork model, 
UnmanagedNetworkBusinessEntity template) {
+        if (model == null) {
+            return template;
+        }
+
+        UnmanagedNetworkBusinessEntity entity = template == null ? new 
UnmanagedNetworkBusinessEntity() : template;
+
+        if (model.isSetId()) {
+            entity.setId(model.getUnmanagedNetworkName());
+        }
+
+        if (model.isSetUnmanagedNetworkName()) {
+            entity.setNetworkName(model.getUnmanagedNetworkName());
+        }
+
+        if (model.isSetNicName()) {
+            entity.setNicName(model.getNicName());
+        }
+
+        if (model.isSetNicId()) {
+            entity.setNicId(Guid.createGuidFromString(model.getNicId()));
+        }
+
+        return entity;
+    }
+
+    @Mapping(from = UnmanagedNetworkBusinessEntity.class, to = 
UnmanagedNetwork.class)
+    public static UnmanagedNetwork map(UnmanagedNetworkBusinessEntity entity, 
UnmanagedNetwork template) {
+        if (entity == null) {
+            return template;
+        }
+
+        UnmanagedNetwork model = template == null ? new UnmanagedNetwork() : 
template;
+
+        model.setId(entity.getId());
+        model.setNicName(entity.getNicName());
+        model.setNicId(entity.getNicId().toString());
+        model.setUnmanagedNetworkName(entity.getNetworkName());
+
+        return model;
+    }
+
+
+}


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

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

Reply via email to