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

Reply via email to