Sergey Gotliv has uploaded a new change for review. Change subject: engine: Modify GetAllConnectableStorageConnections procedure and DAO ......................................................................
engine: Modify GetAllConnectableStorageConnections procedure and DAO Allows to retrieve all connectable storage connections by storage type. If storage type is not specified then API returns all connectable storage connections exactly as it was before that change. Change-Id: I9cea901ff2707bb4caa52e8f8eff06d533d5ddb6 Signed-off-by: Sergey Gotliv <sgot...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ConnectHostToStoragePoolServerCommandBase.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetConnectableStorageServerConnectionsByStoragePoolIdQuery.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageServerConnectionCommandBase.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddStorageServerConnectionCommandTest.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/dal/src/test/java/org/ovirt/engine/core/dao/StorageServerConnectionDAOTest.java M packaging/dbscripts/storages_san_sp.sql 8 files changed, 53 insertions(+), 16 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/97/24497/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ConnectHostToStoragePoolServerCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ConnectHostToStoragePoolServerCommandBase.java index a890c5d..cf042d5 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ConnectHostToStoragePoolServerCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ConnectHostToStoragePoolServerCommandBase.java @@ -26,7 +26,8 @@ } protected void initConnectionList() { - _connections = DbFacade.getInstance().getStorageServerConnectionDao().getAllConnectableStorageSeverConnection(getStoragePool().getId()); + _connections = DbFacade.getInstance().getStorageServerConnectionDao() + .getConnectableStorageConnectionsByStorageType(getStoragePool().getId(), null); updateConnectionsTypeMap(); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetConnectableStorageServerConnectionsByStoragePoolIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetConnectableStorageServerConnectionsByStoragePoolIdQuery.java index 3c1b923..08fa420 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetConnectableStorageServerConnectionsByStoragePoolIdQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetConnectableStorageServerConnectionsByStoragePoolIdQuery.java @@ -13,6 +13,6 @@ protected void executeQueryCommand() { getQueryReturnValue().setReturnValue( getDbFacade().getStorageServerConnectionDao() - .getAllConnectableStorageSeverConnection(getParameters().getId())); + .getConnectableStorageConnectionsByStorageType(getParameters().getId(), null)); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageServerConnectionCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageServerConnectionCommandBase.java index 7f75d88..675f302 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageServerConnectionCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageServerConnectionCommandBase.java @@ -71,7 +71,7 @@ List<StorageServerConnections> connections = null; if (connection.getstorage_type() == StorageType.LOCALFS) { List<StorageServerConnections> connectionsForPool = storagePoolId == null ? Collections.<StorageServerConnections> emptyList() : - getStorageConnDao().getAllConnectableStorageSeverConnection(storagePoolId); + getStorageConnDao().getConnectableStorageConnectionsByStorageType(storagePoolId, null); List<StorageServerConnections> connectionsForPath = getStorageConnDao().getAllForStorage(connection.getconnection()); connections = (List<StorageServerConnections>) CollectionUtils.intersection(connectionsForPool, connectionsForPath); } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddStorageServerConnectionCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddStorageServerConnectionCommandTest.java index 398a979..1dcc72f 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddStorageServerConnectionCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddStorageServerConnectionCommandTest.java @@ -262,7 +262,7 @@ Guid storagePoolId = Guid.newGuid(); List<StorageServerConnections> connections = Collections.singletonList(existingConn); - when(storageConnDao.getAllConnectableStorageSeverConnection(storagePoolId)).thenReturn(connections); + when(storageConnDao.getConnectableStorageConnectionsByStorageType(storagePoolId, null)).thenReturn(connections); when(storageConnDao.getAllForStorage(newLocalConnection.getconnection())).thenReturn(connections); boolean isExists = command.isConnWithSameDetailsExists(newLocalConnection, storagePoolId); @@ -279,7 +279,8 @@ List<StorageServerConnections> connections = Collections.singletonList(existingConn); - when(storageConnDao.getAllConnectableStorageSeverConnection(existingLocalConnectionStoragePoolId)).thenReturn(connections); + when(storageConnDao.getConnectableStorageConnectionsByStorageType(existingLocalConnectionStoragePoolId, null)) + .thenReturn(connections); when(storageConnDao.getAllForStorage(newLocalConnection.getconnection())).thenReturn(connections); boolean isExists = command.isConnWithSameDetailsExists(newLocalConnection, newLocalConnectionStoragePoolId); 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 c122f0d..f61b40e 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 @@ -3,6 +3,7 @@ import java.util.List; import org.ovirt.engine.core.common.businessentities.StorageServerConnections; +import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.compat.Guid; /** @@ -47,13 +48,18 @@ StorageServerConnections getForIqn(String iqn); /** - * Retrieves all connections of Active/Unknown/InActive domains in the specified storage pool. + * Retrieves all connections of Active/Unknown/InActive domains 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 + * * @return the list of connections */ - List<StorageServerConnections> getAllConnectableStorageSeverConnection(Guid pool); + List<StorageServerConnections> getConnectableStorageConnectionsByStorageType(Guid pool, StorageType storageType); /** * Retrieves all connections for the specified volume 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 392ae10..ec2166a 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 @@ -47,11 +47,13 @@ } @Override - public List<StorageServerConnections> getAllConnectableStorageSeverConnection(Guid pool) { - return getCallsHandler().executeReadList("GetAllConnectableStorageSeverConnection", + public List<StorageServerConnections> getConnectableStorageConnectionsByStorageType(Guid pool, + StorageType storageType) { + return getCallsHandler().executeReadList("GetConnectableStorageConnectionsByStorageType", mapper, getCustomMapSqlParameterSource() - .addValue("storage_pool_id", pool)); + .addValue("storage_pool_id", pool) + .addValue("storage_type", (storageType != null) ? storageType.getValue() : null)); } @Override diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageServerConnectionDAOTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageServerConnectionDAOTest.java index 65a0ce7..77c99a0 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageServerConnectionDAOTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageServerConnectionDAOTest.java @@ -81,7 +81,7 @@ */ @Test public void testgetAllConnectableStorageSeverConnectionWithNoConnections() { - List<StorageServerConnections> result = dao.getAllConnectableStorageSeverConnection(Guid.newGuid()); + List<StorageServerConnections> result = dao.getConnectableStorageConnectionsByStorageType(Guid.newGuid(), null); assertNotNull(result); assertTrue(result.isEmpty()); @@ -91,13 +91,40 @@ * Ensures that a set of records are returned. */ @Test - public void testgetAllConnectableStorageSeverConnectionl() { - List<StorageServerConnections> result = dao.getAllConnectableStorageSeverConnection(EXISTING_STORAGE_POOL_ID); + public void testGetAllConnectableStorageSeverConnections() { + List<StorageServerConnections> result = + dao.getConnectableStorageConnectionsByStorageType(EXISTING_STORAGE_POOL_ID, null); assertNotNull(result); assertFalse(result.isEmpty()); } + @Test + public void testGetConnectableBlockStorageConnections() { + List<StorageServerConnections> conns = + dao.getConnectableStorageConnectionsByStorageType(FixturesTool.STORAGE_POOL_RHEL6_ISCSI_OTHER, StorageType.ISCSI); + + assertNotNull(conns); + assertEquals(2, conns.size()); + + for (StorageServerConnections conn : conns) { + assertEquals(StorageType.ISCSI, conn.getstorage_type()); + } + } + + @Test + public void testGetConnectableFileStorageConnectionsByStorageType() { + List<StorageServerConnections> conns = + dao.getConnectableStorageConnectionsByStorageType(FixturesTool.STORAGE_POOL_NFS_2, StorageType.NFS); + + assertNotNull(conns); + assertEquals(1, conns.size()); + + for (StorageServerConnections conn : conns) { + assertEquals(StorageType.NFS, conn.getstorage_type()); + } + } + /** * Retrieves all connections for the given volume group. * diff --git a/packaging/dbscripts/storages_san_sp.sql b/packaging/dbscripts/storages_san_sp.sql index ffc09c4..b9444fe 100644 --- a/packaging/dbscripts/storages_san_sp.sql +++ b/packaging/dbscripts/storages_san_sp.sql @@ -531,7 +531,7 @@ -Create or replace FUNCTION GetAllConnectableStorageSeverConnection(v_storage_pool_id UUID) +Create or replace FUNCTION GetConnectableStorageConnectionsByStorageType(v_storage_pool_id UUID, v_storage_type integer) RETURNS SETOF storage_server_connections STABLE AS $procedure$ BEGIN @@ -541,12 +541,12 @@ 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 in(0,3,4) and (v_storage_type is NULL or storage_domains.storage_type = v_storage_type)) 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 in(0,3,4) and (v_storage_type is NULL or storage_domains.storage_type = v_storage_type)); END; $procedure$ LANGUAGE plpgsql; -- To view, visit http://gerrit.ovirt.org/24497 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9cea901ff2707bb4caa52e8f8eff06d533d5ddb6 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Sergey Gotliv <sgot...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches