Mike Kolesnik has uploaded a new change for review. Change subject: restapi: WIP Added provider networks ......................................................................
restapi: WIP Added provider networks Added networks to provider that can be discovered and seen. The actual discovery is done in Backend. Change-Id: I48b053ab226f700f9609b10dffa054e9d7d3d964 Signed-off-by: Mike Kolesnik <[email protected]> --- A backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderNetworkResource.java A backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderNetworksResource.java M backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderResource.java A backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderNetworkResource.java A backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderNetworksResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderResource.java 6 files changed, 187 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/30/11030/1 diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderNetworkResource.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderNetworkResource.java new file mode 100644 index 0000000..6f80a55 --- /dev/null +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderNetworkResource.java @@ -0,0 +1,31 @@ +/* +* 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.jboss.resteasy.annotations.providers.jaxb.Formatted; +import org.ovirt.engine.api.model.Network; + +@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_X_YAML}) +public interface ProviderNetworkResource { + + @GET + @Formatted + public Network get(); +} diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderNetworksResource.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderNetworksResource.java new file mode 100644 index 0000000..ff7a6e6 --- /dev/null +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderNetworksResource.java @@ -0,0 +1,36 @@ +/* +* 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.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; + +import org.jboss.resteasy.annotations.providers.jaxb.Formatted; +import org.ovirt.engine.api.model.Networks; + +@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_X_YAML}) +public interface ProviderNetworksResource { + + @GET + @Formatted + public Networks list(); + + @Path("{id}") + public ProviderNetworkResource getProviderNetworkSubResource(@PathParam("id") String id); +} diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderResource.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderResource.java index 63aebd7..a75bb98 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderResource.java +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ProviderResource.java @@ -1,9 +1,13 @@ package org.ovirt.engine.api.resource; +import javax.ws.rs.Path; import javax.ws.rs.Produces; import org.ovirt.engine.api.model.Provider; @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_X_YAML}) public interface ProviderResource extends UpdatableResource<Provider> { + + @Path("networks") + public ProviderNetworksResource getProviderNetworksResource(); } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderNetworkResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderNetworkResource.java new file mode 100644 index 0000000..809b7fa --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderNetworkResource.java @@ -0,0 +1,35 @@ +package org.ovirt.engine.api.restapi.resource; + +import org.ovirt.engine.api.model.Network; +import org.ovirt.engine.api.resource.ProviderNetworkResource; + +public class BackendProviderNetworkResource + extends AbstractBackendSubResource<Network, org.ovirt.engine.core.common.businessentities.network.Network> + implements ProviderNetworkResource { + + protected BackendProviderNetworksResource parent; + + public BackendProviderNetworkResource(String id, BackendProviderNetworksResource parent) { + super(id, Network.class, org.ovirt.engine.core.common.businessentities.network.Network.class); + this.parent = parent; + } + + @Override + public Network addParents(Network network) { + return parent.addParents(network); + } + + @Override + public Network get() { + org.ovirt.engine.core.common.businessentities.network.Network entity = parent.lookupNetwork(guid); + if (entity == null) { + return notFound(); + } + return addLinks(map(entity)); + } + + @Override + protected Network doPopulate(Network model, org.ovirt.engine.core.common.businessentities.network.Network entity) { + return model; + } +} diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderNetworksResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderNetworksResource.java new file mode 100644 index 0000000..f4dacec --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderNetworksResource.java @@ -0,0 +1,75 @@ +package org.ovirt.engine.api.restapi.resource; + +import java.util.List; + +import javax.ws.rs.core.Response; + +import org.ovirt.engine.api.model.Network; +import org.ovirt.engine.api.model.Networks; +import org.ovirt.engine.api.model.Provider; +import org.ovirt.engine.api.resource.ProviderNetworkResource; +import org.ovirt.engine.api.resource.ProviderNetworksResource; +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 BackendProviderNetworksResource + extends AbstractBackendCollectionResource<Network, org.ovirt.engine.core.common.businessentities.network.Network> + implements ProviderNetworksResource { + + private String providerId; + + public BackendProviderNetworksResource(String providerId) { + super(Network.class, org.ovirt.engine.core.common.businessentities.network.Network.class); + this.providerId = providerId; + } + + @Override + public Networks list() { + return mapCollection(discoverNetworksOnProvider()); + } + + @Override + public Network addParents(Network network) { + network.setProvider(new Provider()); + network.getProvider().setId(providerId); + return network; + } + + private List<org.ovirt.engine.core.common.businessentities.network.Network> discoverNetworksOnProvider() { + return getBackendCollection(VdcQueryType.GetAllNetworksOnProvider, new IdQueryParameters(new Guid(providerId))); + } + + protected Networks mapCollection(List<org.ovirt.engine.core.common.businessentities.network.Network> entities) { + Networks collection = new Networks(); + for (org.ovirt.engine.core.common.businessentities.network.Network entity : entities) { + collection.getNetworks().add(addLinks(map(entity))); + } + return collection; + } + + @Override + protected Network doPopulate(Network model, org.ovirt.engine.core.common.businessentities.network.Network entity) { + return model; + } + + @Override + @SingleEntityResource + public ProviderNetworkResource getProviderNetworkSubResource(String id) { + return inject(new BackendProviderNetworkResource(id, this)); + } + + @Override + protected Response performRemove(String id) { + throw new UnsupportedOperationException(); + } + + public org.ovirt.engine.core.common.businessentities.network.Network lookupNetwork(Guid id) { + for (org.ovirt.engine.core.common.businessentities.network.Network entity : discoverNetworksOnProvider()) { + if (id != null && id.equals(entity.getId())) { + return entity; + } + } + return null; + } +} diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderResource.java index a2bd6de..5eb30c1 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendProviderResource.java @@ -2,6 +2,7 @@ import org.ovirt.engine.api.model.Provider; +import org.ovirt.engine.api.resource.ProviderNetworksResource; import org.ovirt.engine.api.resource.ProviderResource; import org.ovirt.engine.core.common.action.ProviderParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; @@ -64,4 +65,9 @@ protected Provider doPopulate(Provider model, org.ovirt.engine.core.common.businessentities.Provider entity) { return model; } + + @Override + public ProviderNetworksResource getProviderNetworksResource() { + return inject(new BackendProviderNetworksResource(id)); + } } -- To view, visit http://gerrit.ovirt.org/11030 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I48b053ab226f700f9609b10dffa054e9d7d3d964 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Mike Kolesnik <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
