Maor Lipchuk has uploaded a new change for review.

Change subject: core: Add vdc query for import Block Storage Domain
......................................................................

core: Add vdc query for import Block Storage Domain

Add vdc query for validating that the block Storage Domain is not
attached to another Data Center.
The validation is being done on the Storage Domain metadata which
contains the storage pool id.

The Query only fetches the storage domain info and does not perform
connect or disconnect, to prevent a scenario of disconnecting an exisitng
Storage Domains.

Change-Id: Id93a96ad7fdad3305f3f2254f67f476c1e989b6f
Bug-Url: https://bugzilla.redhat.com/1138115
Signed-off-by: Maor Lipchuk <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetBlockStorageDomainsWithAttachedStoragePoolGuidQuery.java
A 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/GetBlockStorageDomainsWithAttachedStoragePoolGuidQueryTest.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
3 files changed, 211 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/42/36542/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetBlockStorageDomainsWithAttachedStoragePoolGuidQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetBlockStorageDomainsWithAttachedStoragePoolGuidQuery.java
new file mode 100644
index 0000000..a6599c5
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetBlockStorageDomainsWithAttachedStoragePoolGuidQuery.java
@@ -0,0 +1,22 @@
+package org.ovirt.engine.core.bll.storage;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
+import 
org.ovirt.engine.core.common.queries.StorageDomainsAndStoragePoolIdQueryParameters;
+
+public class GetBlockStorageDomainsWithAttachedStoragePoolGuidQuery<P extends 
StorageDomainsAndStoragePoolIdQueryParameters> extends 
GetStorageDomainsWithAttachedStoragePoolGuidQuery<P> {
+    public GetBlockStorageDomainsWithAttachedStoragePoolGuidQuery(P 
parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected List<StorageDomainStatic> filterAttachedStorageDomains() {
+        List<StorageDomainStatic> storageDomainStaticList = new ArrayList<>();
+        if (getParameters().getStorageDomainList() != null) {
+            storageDomainStaticList = 
getAttachedStorageDomains(getParameters().getStorageDomainList());
+        }
+        return storageDomainStaticList;
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/GetBlockStorageDomainsWithAttachedStoragePoolGuidQueryTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/GetBlockStorageDomainsWithAttachedStoragePoolGuidQueryTest.java
new file mode 100644
index 0000000..4409f90
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/GetBlockStorageDomainsWithAttachedStoragePoolGuidQueryTest.java
@@ -0,0 +1,188 @@
+package org.ovirt.engine.core.bll.storage;
+
+import static junit.framework.TestCase.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.ovirt.engine.core.bll.AbstractQueryTest;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
+import org.ovirt.engine.core.common.businessentities.StoragePool;
+import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
+import org.ovirt.engine.core.common.businessentities.StorageType;
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VDSStatus;
+import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend;
+import 
org.ovirt.engine.core.common.queries.StorageDomainsAndStoragePoolIdQueryParameters;
+import org.ovirt.engine.core.common.utils.Pair;
+import 
org.ovirt.engine.core.common.vdscommands.HSMGetStorageDomainInfoVDSCommandParameters;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.StoragePoolDAO;
+import org.ovirt.engine.core.dao.VdsDAO;
+
+public class GetBlockStorageDomainsWithAttachedStoragePoolGuidQueryTest extends
+        AbstractQueryTest<StorageDomainsAndStoragePoolIdQueryParameters, 
GetFileStorageDomainsWithAttachedStoragePoolGuidQuery<StorageDomainsAndStoragePoolIdQueryParameters>>
 {
+    @Mock
+    private VDSBrokerFrontend vdsBrokerFrontendMock;
+
+    private StorageDomain storageDomain;
+
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        storageDomain = new StorageDomain();
+        storageDomain.setStorageName("Name of Storage");
+        storageDomain.setStorageType(StorageType.ISCSI);
+
+        VDS vds = new VDS();
+        vds.setId(Guid.newGuid());
+        VdsDAO vdsDAOMock = mock(VdsDAO.class);
+        List<VDS> listVds = new ArrayList<>();
+        listVds.add(vds);
+        when(vdsDAOMock.getAllForStoragePoolAndStatus(any(Guid.class), 
eq(VDSStatus.Up))).thenReturn(listVds);
+        when(getDbFacadeMockInstance().getVdsDao()).thenReturn(vdsDAOMock);
+    }
+
+    @Test
+    public void testAttachedStorageDomainWithStorageDomainsParameterQuery() {
+        mockVdsCommand();
+        StoragePool storagePool = new StoragePool();
+        storagePool.setStatus(StoragePoolStatus.Up);
+        mockStoragePoolDao(storagePool);
+
+        // Create parameters
+        List<StorageDomain> storageDomainList = new ArrayList<>();
+        storageDomainList.add(storageDomain);
+        StorageDomainsAndStoragePoolIdQueryParameters paramsMock = 
getQueryParameters();
+        when(paramsMock.getStorageDomainList()).thenReturn(storageDomainList);
+
+        // Run 'HSMGetStorageDomainInfo' command
+        VDSReturnValue returnValue = new VDSReturnValue();
+        returnValue.setSucceeded(true);
+
+        Pair<StorageDomainStatic, Guid> storageDomainToPoolId =
+                new Pair<>(storageDomain.getStorageStaticData(), 
Guid.newGuid());
+        returnValue.setReturnValue(storageDomainToPoolId);
+        
when(vdsBrokerFrontendMock.RunVdsCommand(eq(VDSCommandType.HSMGetStorageDomainInfo),
+                
any(HSMGetStorageDomainInfoVDSCommandParameters.class))).thenReturn(returnValue);
+
+        // Execute command
+        getQuery().executeQueryCommand();
+
+        // Assert the query's results
+        List<StorageDomainStatic> returnedStorageDomainList = new 
ArrayList<>();
+        returnedStorageDomainList.add(storageDomain.getStorageStaticData());
+        assertEquals(returnedStorageDomainList, 
getQuery().getQueryReturnValue().getReturnValue());
+    }
+
+    @Test
+    public void testUnattachedStorageDomainWithStorageDomainsParameterQuery() {
+        mockVdsCommand();
+        StoragePool storagePool = new StoragePool();
+        storagePool.setStatus(StoragePoolStatus.Up);
+        mockStoragePoolDao(storagePool);
+
+        // Create parameters
+        List<StorageDomain> storageDomainList = new ArrayList<>();
+        storageDomainList.add(storageDomain);
+        StorageDomainsAndStoragePoolIdQueryParameters paramsMock = 
getQueryParameters();
+        when(paramsMock.getStorageDomainList()).thenReturn(storageDomainList);
+
+        // Run 'HSMGetStorageDomainInfo' command
+        VDSReturnValue returnValue = new VDSReturnValue();
+        returnValue.setSucceeded(true);
+
+        Pair<StorageDomainStatic, Guid> storageDomainToPoolId = new 
Pair<>(storageDomain.getStorageStaticData(), null);
+        returnValue.setReturnValue(storageDomainToPoolId);
+        
when(vdsBrokerFrontendMock.RunVdsCommand(eq(VDSCommandType.HSMGetStorageDomainInfo),
+                
any(HSMGetStorageDomainInfoVDSCommandParameters.class))).thenReturn(returnValue);
+
+        // Execute command
+        getQuery().executeQueryCommand();
+
+        // Assert the query's results
+        List<StorageDomainStatic> returnedStorageDomainList = new 
ArrayList<>();
+        assertEquals(returnedStorageDomainList, 
getQuery().getQueryReturnValue().getReturnValue());
+    }
+
+    @Test
+    public void testEmptyStorageDomainListQuery() {
+        mockVdsCommand();
+        StoragePool storagePool = new StoragePool();
+        storagePool.setStatus(StoragePoolStatus.Up);
+        mockStoragePoolDao(storagePool);
+
+        // Create parameters
+        List<StorageDomain> storageDomainList = new ArrayList<>();
+        StorageDomainsAndStoragePoolIdQueryParameters paramsMock = 
getQueryParameters();
+        when(paramsMock.getStorageDomainList()).thenReturn(storageDomainList);
+
+        // Run 'HSMGetStorageDomainInfo' command
+        VDSReturnValue returnValue = new VDSReturnValue();
+        returnValue.setSucceeded(true);
+
+        Pair<StorageDomainStatic, Guid> storageDomainToPoolId =
+                new Pair<>(storageDomain.getStorageStaticData(), 
Guid.newGuid());
+        returnValue.setReturnValue(storageDomainToPoolId);
+        
when(vdsBrokerFrontendMock.RunVdsCommand(eq(VDSCommandType.HSMGetStorageDomainInfo),
+                
any(HSMGetStorageDomainInfoVDSCommandParameters.class))).thenReturn(returnValue);
+
+        // Execute command
+        getQuery().executeQueryCommand();
+
+        // Assert the query's results
+        List<StorageDomainStatic> returnedStorageDomainList = new 
ArrayList<>();
+        assertEquals(returnedStorageDomainList, 
getQuery().getQueryReturnValue().getReturnValue());
+    }
+
+    @Test
+    public void testNullStorageDomainListQuery() {
+        mockVdsCommand();
+        StoragePool storagePool = new StoragePool();
+        storagePool.setStatus(StoragePoolStatus.Up);
+        mockStoragePoolDao(storagePool);
+
+        // Create parameters
+        StorageDomainsAndStoragePoolIdQueryParameters paramsMock = 
getQueryParameters();
+        when(paramsMock.getStorageDomainList()).thenReturn(null);
+
+        // Run 'HSMGetStorageDomainInfo' command
+        VDSReturnValue returnValue = new VDSReturnValue();
+        returnValue.setSucceeded(true);
+
+        Pair<StorageDomainStatic, Guid> storageDomainToPoolId =
+                new Pair<>(storageDomain.getStorageStaticData(), 
Guid.newGuid());
+        returnValue.setReturnValue(storageDomainToPoolId);
+        
when(vdsBrokerFrontendMock.RunVdsCommand(eq(VDSCommandType.HSMGetStorageDomainInfo),
+                
any(HSMGetStorageDomainInfoVDSCommandParameters.class))).thenReturn(returnValue);
+
+        // Execute command
+        getQuery().executeQueryCommand();
+
+        // Assert the query's results
+        List<StorageDomainStatic> returnedStorageDomainList = new 
ArrayList<>();
+        assertEquals(returnedStorageDomainList, 
getQuery().getQueryReturnValue().getReturnValue());
+    }
+
+    private void mockVdsCommand() {
+        vdsBrokerFrontendMock = mock(VDSBrokerFrontend.class);
+        doReturn(vdsBrokerFrontendMock).when(getQuery()).getVdsBroker();
+    }
+
+    private void mockStoragePoolDao(StoragePool storagePool) {
+        StoragePoolDAO storagePoolDaoMock = mock(StoragePoolDAO.class);
+        
when(getDbFacadeMockInstance().getStoragePoolDao()).thenReturn(storagePoolDaoMock);
+        when(storagePoolDaoMock.get(any(Guid.class))).thenReturn(storagePool);
+    }
+}
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 0543010..259b876 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
@@ -275,6 +275,7 @@
     GetNetworksByIscsiBondId,
     GetStorageDomainsWithAttachedStoragePoolGuid,
     GetFileStorageDomainsWithAttachedStoragePoolGuid,
+    GetBlockStorageDomainsWithAttachedStoragePoolGuid,
 
 
     // Event Notification


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

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

Reply via email to