Alissa Bonas has uploaded a new change for review. Change subject: restapi: add connections subresource for domain ......................................................................
restapi: add connections subresource for domain Change-Id: I0f63f8384c245eb28c18a3fde87ba57a8c1cd678 Signed-off-by: Alissa Bonas <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetStorageServerConnectionsOfDomainQuery.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAO.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAODbFacadeImpl.java M backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/StorageDomainResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java A backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainServerConnectionResource.java A backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainServerConnectionsResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageServerConnectionResource.java M packaging/dbscripts/storages_sp.sql 11 files changed, 193 insertions(+), 4 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/45/17245/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetStorageServerConnectionsOfDomainQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetStorageServerConnectionsOfDomainQuery.java new file mode 100644 index 0000000..b81a727 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetStorageServerConnectionsOfDomainQuery.java @@ -0,0 +1,17 @@ +package org.ovirt.engine.core.bll; + +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; + +public class GetStorageServerConnectionsOfDomainQuery<P extends IdQueryParameters> extends QueriesCommandBase<P> { + + public GetStorageServerConnectionsOfDomainQuery(P parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + getQueryReturnValue().setReturnValue(getDbFacade().getStorageServerConnectionDao() + .getAllForDomain(getParameters().getId())); + } +} 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 95c545c..ff92052 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 @@ -176,6 +176,7 @@ GetStorageDomainById(VdcQueryAuthType.User), GetStorageServerConnectionById, GetAllStorageServerConnections, + GetStorageServerConnectionsOfDomain, GetStoragePoolById(VdcQueryAuthType.User), GetStorageDomainsByConnection, GetStorageDomainsByStoragePoolId(VdcQueryAuthType.User), diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAO.java index e339a4e..9bb0ff9d 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAO.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAO.java @@ -84,6 +84,13 @@ StorageServerConnections connection); /** + * Retrieves all connections used by the specified storage domain + * @param domainId + * @return the list of connections + */ + List<StorageServerConnections> getAllForDomain(String domainId); + + /** * Saves the specified connection. * * @param connection diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAODbFacadeImpl.java index c634625..4f7bc72 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageServerConnectionDAODbFacadeImpl.java @@ -84,6 +84,11 @@ } @Override + public List<StorageServerConnections> getAllForDomain(Guid domainId) { + getCallsHandler().executeModification("GetStorageServerConnectionsOfDomain", getIdParameterSource(domainId)); + } + + @Override public void save(StorageServerConnections connection) { getCallsHandler().executeModification("Insertstorage_server_connections", getFullParameterSource(connection)); } diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/StorageDomainResource.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/StorageDomainResource.java index 9244d09..420805c 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/StorageDomainResource.java +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/StorageDomainResource.java @@ -42,4 +42,7 @@ @Path("disks") public DisksResource getDisksResource(); + + @Path("storageconnections") + public StorageServerConnectionsResource getStorageConnectionsResource(); } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java index 3edb851..0a0da48 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainResource.java @@ -19,6 +19,7 @@ import org.ovirt.engine.api.resource.RemovableStorageDomainContentsResource; import org.ovirt.engine.api.resource.FilesResource; import org.ovirt.engine.api.resource.StorageDomainResource; +import org.ovirt.engine.api.resource.StorageServerConnectionsResource; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.ExtendSANStorageDomainParameters; import org.ovirt.engine.core.common.action.StorageDomainManagementParameter; @@ -267,4 +268,9 @@ public DisksResource getDisksResource() { return inject(new BackendStorageDomainDisksResource(guid)); } + + @Override + public StorageServerConnectionsResource getStorageConnectionsResource() { + return inject(new BackendStorageDomainServerConnectionsResource(guid)); + } } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainServerConnectionResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainServerConnectionResource.java new file mode 100644 index 0000000..97df7ea --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainServerConnectionResource.java @@ -0,0 +1,47 @@ +package org.ovirt.engine.api.restapi.resource; + +import org.ovirt.engine.api.model.Host; +import org.ovirt.engine.api.model.Storage; +import org.ovirt.engine.api.resource.StorageServerConnectionResource; +import org.ovirt.engine.api.resource.StorageServerConnectionsResource; +import org.ovirt.engine.core.common.action.StorageServerConnectionParametersBase; +import org.ovirt.engine.core.common.action.VdcActionParametersBase; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.StorageServerConnections; +import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.interfaces.SearchType; +import org.ovirt.engine.core.common.queries.StorageServerConnectionQueryParametersBase; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.compat.Guid; + +public class BackendStorageDomainServerConnectionResource extends + AbstractBackendSubResource<Storage, StorageServerConnections> implements StorageServerConnectionResource { + private StorageServerConnectionsResource parent; + + public BackendStorageDomainServerConnectionResource(String id, StorageServerConnectionsResource parent) { + super(id, Storage.class, StorageServerConnections.class); + this.parent = parent; + } + + @Override + public Storage get() { + return performGet(VdcQueryType.GetStorageServerConnectionById, new StorageServerConnectionQueryParametersBase(guid.toString())); + } + + @Override + public Storage update(Storage connection) { + throw new UnsupportedOperationException(); + } + + + @Override + protected Storage doPopulate(Storage model, StorageServerConnections entity) { + return model; + } + + public StorageServerConnectionsResource getParent() { + return parent; + } + + +} diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainServerConnectionsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainServerConnectionsResource.java new file mode 100644 index 0000000..a291832 --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainServerConnectionsResource.java @@ -0,0 +1,78 @@ +package org.ovirt.engine.api.restapi.resource; + +import org.ovirt.engine.api.model.Host; +import org.ovirt.engine.api.model.Storage; +import org.ovirt.engine.api.model.StorageConnections; +import org.ovirt.engine.api.resource.StorageServerConnectionResource; +import org.ovirt.engine.api.resource.StorageServerConnectionsResource; +import org.ovirt.engine.core.common.action.StorageServerConnectionParametersBase; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.core.common.businessentities.StorageServerConnections; +import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.interfaces.SearchType; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.StorageServerConnectionQueryParametersBase; +import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.compat.Guid; + +import javax.ws.rs.PathParam; +import javax.ws.rs.core.Response; +import java.util.List; + +public class BackendStorageDomainServerConnectionsResource extends AbstractBackendCollectionResource<Storage, StorageServerConnections> implements StorageServerConnectionsResource { + + Guid storageDomainId = null; + + public BackendStorageDomainServerConnectionsResource(Guid storageDomainId) { + super(Storage.class, StorageServerConnections.class); + this.storageDomainId = storageDomainId; + } + + @Override + public StorageConnections list() { + return null; + } + + private StorageDomain getStorageDomain(Guid domainId) { + return getEntity(StorageDomain.class, VdcQueryType.GetStorageDomainById, new IdQueryParameters(domainId), "Storage domain: id=" + domainId) ; + } + + @Override + protected Storage doPopulate(Storage model, StorageServerConnections entity) { + return model; + } + + private StorageConnections mapCollection(List<StorageServerConnections> entities) { + StorageConnections collection = new StorageConnections(); + for (StorageServerConnections entity : entities) { + Storage connection = map(entity); + if (connection != null) { + collection.getStorageConnections().add(connection); + } + } + return collection; + } + + @Override + public Response add(Storage storage) { + throw new UnsupportedOperationException(); + } + + @Override + public Response remove(@PathParam("id") String id, Host host) { + throw new UnsupportedOperationException(); + } + + @Override + protected Response performRemove(String id) { + throw new UnsupportedOperationException(); + } + + @Override + @SingleEntityResource + public StorageServerConnectionResource getStorageConnectionSubResource(String id) { + return inject(new BackendStorageDomainServerConnectionResource(id, this)); + } +} diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java index 3f748ee..2a1d77c 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainsResource.java @@ -48,7 +48,7 @@ extends AbstractBackendCollectionResource<StorageDomain, org.ovirt.engine.core.common.businessentities.StorageDomain> implements StorageDomainsResource { - static final String[] SUB_COLLECTIONS = { "permissions", "files", "templates", "vms", "disks" }; + static final String[] SUB_COLLECTIONS = { "permissions", "files", "templates", "vms", "disks" , "storageconnections"}; private StorageDomain storageDomain = null; //utility variable; used in the context of a single activation of remove() diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageServerConnectionResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageServerConnectionResource.java index 96fa858..a89ad10 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageServerConnectionResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageServerConnectionResource.java @@ -3,6 +3,7 @@ import org.ovirt.engine.api.model.Host; import org.ovirt.engine.api.model.Storage; import org.ovirt.engine.api.resource.StorageServerConnectionResource; +import org.ovirt.engine.api.resource.StorageServerConnectionsResource; import org.ovirt.engine.core.common.action.StorageServerConnectionParametersBase; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; @@ -15,9 +16,9 @@ public class BackendStorageServerConnectionResource extends AbstractBackendSubResource<Storage, org.ovirt.engine.core.common.businessentities.StorageServerConnections> implements StorageServerConnectionResource { - private BackendStorageServerConnectionsResource parent; + private StorageServerConnectionsResource parent; - public BackendStorageServerConnectionResource(String id, BackendStorageServerConnectionsResource parent) { + public BackendStorageServerConnectionResource(String id, StorageServerConnectionsResource parent) { super(id, Storage.class, StorageServerConnections.class); this.parent = parent; } @@ -43,7 +44,7 @@ return model; } - public BackendStorageServerConnectionsResource getParent() { + public StorageServerConnectionsResource getParent() { return parent; } diff --git a/packaging/dbscripts/storages_sp.sql b/packaging/dbscripts/storages_sp.sql index 2671394..0a87119 100644 --- a/packaging/dbscripts/storages_sp.sql +++ b/packaging/dbscripts/storages_sp.sql @@ -685,3 +685,27 @@ (v_supports_gluster_service = TRUE AND vg.gluster_service = TRUE)) AND vg.storage_pool_id = sp.id); END; $procedure$ LANGUAGE plpgsql; + + +CREATE OR REPLACE FUNCTION GetStorageServerConnectionsOfDomain(v_storage_domain_id UUID) + RETURNS SETOF storage_server_connections + AS $procedure$ + BEGIN +RETURN QUERY SELECT * +FROM storage_server_connections +WHERE EXISTS ( SELECT 1 + FROM storage_domain_static + WHERE storage_domain_static.id = v_storage_domain_id + AND storage_domain_static.storage_type in (1,4,6) -- file storage domains - nfs,posix,local + AND storage_server_connections.id = storage_domain_static.storage + UNION ALL + SELECT 1 + FROM storage_domain_static + JOIN luns ON storage_domain_static.storage = luns.volume_group_id + JOIN lun_storage_server_connection_map ON luns.lun_id = lun_storage_server_connection_map.lun_id + AND storage_server_connections.id = lun_storage_server_connection_map.storage_server_connection + WHERE storage_domain_static.id = v_storage_domain_id + AND storage_domain_static.storage_type = 3 -- storage type = iscsi + ); +END; $procedure$ +LANGUAGE plpgsql; -- To view, visit http://gerrit.ovirt.org/17245 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0f63f8384c245eb28c18a3fde87ba57a8c1cd678 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alissa Bonas <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
