Liron Ar has uploaded a new change for review.

Change subject: core: support for querying connections of domains in given 
statuses
......................................................................

core: support for querying connections of domains in given statuses

this patch adds the abillity to load storage server connections of
domains in provided statuses.

Change-Id: Ie05c371b37fb0cb2c723e6aee3d416abd0d8eb20
Signed-off-by: Liron Aravot <[email protected]>
---
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 packaging/dbscripts/storages_san_sp.sql
3 files changed, 41 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/21/27521/1

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 4f56acf..69a54e5 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
@@ -1,7 +1,9 @@
 package org.ovirt.engine.core.dao;
 
 import java.util.List;
+import java.util.Set;
 
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StorageServerConnections;
 import org.ovirt.engine.core.common.businessentities.StorageType;
 import org.ovirt.engine.core.compat.Guid;
@@ -71,6 +73,20 @@
     List<StorageServerConnections> 
getConnectableStorageConnectionsByStorageType(Guid pool, StorageType 
storageType);
 
     /**
+     * Retrieves all connections of domains in the given statuses of the 
specified storage type
+     * in the specified storage pool. If storage type is not specified then 
all connections of the same
+     * domains are returned.
+     * @param pool
+     *          the storage pool
+     * @param storageType
+     *          the storage type
+     * @param statuses
+     *          the applicable statuses
+     * @return the list of connections
+     */
+    public List<StorageServerConnections> 
getConnectableStorageConnectionsByStorageTypeAndStatus(Guid pool, StorageType 
storageType,
+                                                                               
                  Set<StorageDomainStatus> statuses);
+    /**
      * Retrieves all connections for the specified volume group.
      *
      * @param group
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 0c9f074..ce7eb79 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
@@ -2,9 +2,13 @@
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.EnumSet;
+import java.util.LinkedList;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
 import org.ovirt.engine.core.common.businessentities.NfsVersion;
@@ -53,12 +57,25 @@
 
     @Override
     public List<StorageServerConnections> 
getConnectableStorageConnectionsByStorageType(Guid pool,
-                                                                               
         StorageType storageType) {
+            StorageType storageType) {
+        return getConnectableStorageConnectionsByStorageTypeAndStatus(pool,
+                storageType,
+                EnumSet.of(StorageDomainStatus.Active, 
StorageDomainStatus.InActive, StorageDomainStatus.Unknown));
+    }
+
+    @Override
+    public List<StorageServerConnections> 
getConnectableStorageConnectionsByStorageTypeAndStatus(Guid pool,
+            StorageType storageType, Set<StorageDomainStatus> statuses) {
+        List<String> statusesVals = new LinkedList<>();
+        for (StorageDomainStatus status : statuses) {
+            statusesVals.add(Integer.toString(status.getValue()));
+        }
         return 
getCallsHandler().executeReadList("GetConnectableStorageConnectionsByStorageType",
                 mapper,
                 getCustomMapSqlParameterSource()
                         .addValue("storage_pool_id", pool)
-                        .addValue("storage_type", (storageType != null) ? 
storageType.getValue() : null));
+                        .addValue("storage_type", (storageType != null) ? 
storageType.getValue() : null)
+                        .addValue("statuses", StringUtils.join(statusesVals, 
",")));
     }
 
     @Override
diff --git a/packaging/dbscripts/storages_san_sp.sql 
b/packaging/dbscripts/storages_san_sp.sql
index f6cb640..8b1111e 100644
--- a/packaging/dbscripts/storages_san_sp.sql
+++ b/packaging/dbscripts/storages_san_sp.sql
@@ -531,22 +531,25 @@
 
 
 
-Create or replace FUNCTION 
GetConnectableStorageConnectionsByStorageType(v_storage_pool_id UUID, 
v_storage_type integer)
+Create or replace FUNCTION 
GetConnectableStorageConnectionsByStorageType(v_storage_pool_id UUID, 
v_storage_type integer, v_statuses varchar(10))
 RETURNS SETOF storage_server_connections STABLE
    AS $procedure$
+DECLARE
+  statuses int[];
 BEGIN
+statuses := string_to_array(v_statuses,',')::integer[];
 RETURN QUERY SELECT * FROM (SELECT distinct storage_server_connections.*
    FROM
    LUN_storage_server_connection_map LUN_storage_server_connection_map
    INNER JOIN  LUNs ON LUN_storage_server_connection_map.LUN_id = LUNs.LUN_id
    INNER JOIN  storage_domains ON LUNs.volume_group_id = 
storage_domains.storage
    INNER JOIN  storage_server_connections ON 
LUN_storage_server_connection_map.storage_server_connection = 
storage_server_connections.id
-   WHERE     (storage_domains.storage_pool_id = v_storage_pool_id  and 
storage_domains.status in(0,3,4))
+   WHERE     (storage_domains.storage_pool_id = v_storage_pool_id  and 
storage_domains.status = any(statuses))
    UNION
    SELECT distinct storage_server_connections.*
    FROM         storage_server_connections
    INNER JOIN  storage_domains ON storage_server_connections.id = 
storage_domains.storage
-   WHERE     (storage_domains.storage_pool_id = v_storage_pool_id and 
storage_domains.status in(0,3,4))
+   WHERE     (storage_domains.storage_pool_id = v_storage_pool_id and 
storage_domains.status = any(statuses))
    ) connections WHERE (v_storage_type is NULL or connections.storage_type = 
v_storage_type);
 END; $procedure$
 LANGUAGE plpgsql;


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

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

Reply via email to