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
