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
