Alissa Bonas has uploaded a new change for review. Change subject: core: retrieve correct domains status in updateConn ......................................................................
core: retrieve correct domains status in updateConn Change-Id: I19221ef1f32dd7117e020cf6750034d64b4b47db Signed-off-by: Alissa Bonas <abo...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommandTest.java 2 files changed, 44 insertions(+), 19 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/70/17070/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommand.java index 50782cf..36f3aa4 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommand.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -16,8 +17,8 @@ import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; import org.ovirt.engine.core.common.businessentities.StorageDomainType; +import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMap; -import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMapId; import org.ovirt.engine.core.common.businessentities.StorageServerConnections; import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.common.businessentities.VM; @@ -152,8 +153,9 @@ } Guid storageDomainId = lun.getStorageDomainId(); if (storageDomainId != null) { - StorageDomain domain = getStorageDomainDao().get(storageDomainId); - if (!domain.getStatus().equals(StorageDomainStatus.Maintenance)) { + StoragePool pool = getStoragePoolDAO().getAllForStorageDomain(storageDomainId).get(0); + StorageDomain domain = getStorageDomainDao().getForStoragePool(storageDomainId,pool.getId()); + if (!(domain.getStatus().equals(StorageDomainStatus.Maintenance))) { String domainName = domain.getStorageName(); problematicDomainNames.add(domainName); } else { @@ -195,7 +197,6 @@ @Override protected void executeCommand() { boolean isDomainUpdateRequired = doDomainsUseConnection(getConnection()); - StoragePoolIsoMap map = null; List<StorageDomain> updatedDomains = new ArrayList<>(); boolean hasConnectStorageSucceeded = false; if (isDomainUpdateRequired) { @@ -220,8 +221,9 @@ getStorageConnDao().update(getParameters().getStorageServerConnection()); if (isDomainUpdateRequired) { for (StorageDomain domain : domains) { - map = getStoragePoolIsoMap(domain); - restoreStateAfterUpdate(map); + for (StoragePoolIsoMap map : getStoragePoolIsoMap(domain)) { + restoreStateAfterUpdate(map); + } } if (hasConnectStorageSucceeded) { disconnectFromStorage(); @@ -245,9 +247,8 @@ return !getLuns().isEmpty(); } - protected StoragePoolIsoMap getStoragePoolIsoMap(StorageDomain storageDomain) { - StoragePoolIsoMapId mapId = new StoragePoolIsoMapId(storageDomain.getId(), getParameters().getStoragePoolId()); - return getStoragePoolIsoMapDao().get(mapId); + protected Collection<StoragePoolIsoMap> getStoragePoolIsoMap(StorageDomain storageDomain) { + return getStoragePoolIsoMapDao().getAllForStorage(storageDomain.getId()); } protected void changeStorageDomainStatusInTransaction(final StorageDomainStatus status) { @@ -255,12 +256,13 @@ @Override public Void runInTransaction() { for (StorageDomain domain : domains) { - StoragePoolIsoMap map = getStoragePoolIsoMap(domain); CompensationContext context = getCompensationContext(); - context.snapshotEntityStatus(map, map.getstatus()); - updateStatus(map, status); + for (StoragePoolIsoMap map : getStoragePoolIsoMap(domain)) { + context.snapshotEntityStatus(map, map.getstatus()); + updateStatus(map, status); + } + } getCompensationContext().stateChanged(); - } return null; } }); @@ -293,7 +295,7 @@ protected boolean connectToStorage() { StorageServerConnectionManagementVDSParameters newConnectionParametersForVdsm = createParametersForVdsm(getParameters().getVdsId(), - getParameters().getStoragePoolId(), + Guid.Empty, getParameters().getStorageServerConnection().getstorage_type(), getParameters().getStorageServerConnection()); return runVdsCommand(VDSCommandType.ConnectStorageServer, newConnectionParametersForVdsm).getSucceeded(); @@ -302,7 +304,7 @@ protected void disconnectFromStorage() { StorageServerConnectionManagementVDSParameters connectionParametersForVdsm = createParametersForVdsm(getParameters().getVdsId(), - getParameters().getStoragePoolId(), + Guid.Empty, getConnection().getstorage_type(), getConnection()); boolean isDisconnectSucceeded = diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommandTest.java index f4deba1..56055a9 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStorageServerConnectionCommandTest.java @@ -28,6 +28,7 @@ import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainDynamic; import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; +import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMap; import org.ovirt.engine.core.common.businessentities.StorageServerConnections; import org.ovirt.engine.core.common.businessentities.StorageType; @@ -39,6 +40,7 @@ import org.ovirt.engine.core.dao.LunDAO; import org.ovirt.engine.core.dao.StorageDomainDAO; import org.ovirt.engine.core.dao.StorageDomainDynamicDAO; +import org.ovirt.engine.core.dao.StoragePoolDAO; import org.ovirt.engine.core.dao.StoragePoolIsoMapDAO; import org.ovirt.engine.core.dao.StorageServerConnectionDAO; import org.ovirt.engine.core.dao.VmDAO; @@ -72,6 +74,9 @@ @Mock private StorageDomainDAO storageDomainDAO; + + @Mock + private StoragePoolDAO storagePoolDao; private StorageServerConnectionParametersBase parameters; @@ -108,6 +113,7 @@ doReturn(lunDAO).when(command).getLunDao(); doReturn(vmDAO).when(command).getVmDAO(); doReturn(storageDomainDAO).when(command).getStorageDomainDao(); + doReturn(storagePoolDao).when(command).getStoragePoolDAO(); } private StorageServerConnections createNFSConnection(String connection, @@ -370,6 +376,11 @@ when(vmDAO.getForDisk(diskId1)).thenReturn(vmsMap); parameters.setStorageServerConnection(iscsiConnection); when(storageConnDao.get(iscsiConnection.getid())).thenReturn(iscsiConnection); + List<StoragePool> pools = new ArrayList<>(); + StoragePool pool = new StoragePool(); + pool.setId(Guid.newGuid()); + pools.add(pool); + when(storagePoolDao.getAllForStorageDomain(storageDomainId)).thenReturn(pools); doReturn(luns).when(command).getLuns(); List<StorageDomain> domains = new ArrayList<>(); StorageDomain domain1 = new StorageDomain(); @@ -378,7 +389,7 @@ domain1.setId(storageDomainId); domain1.setStorageName("storagedomain4"); domains.add(domain1); - when(storageDomainDAO.get(storageDomainId)).thenReturn(domain1); + when(storageDomainDAO.getForStoragePool(storageDomainId,pool.getId())).thenReturn(domain1); List<String> messages = CanDoActionTestUtils.runAndAssertCanDoActionFailure(command, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_UNSUPPORTED_ACTION_FOR_RUNNING_VMS_AND_DOMAINS_MAINTENANCE); assertTrue(messages.contains("$vmNames vm1")); @@ -451,6 +462,12 @@ domain1.setStorageName("storagedomain4"); domains.add(domain1); when(storageDomainDAO.get(storageDomainId)).thenReturn(domain1); + List<StoragePool> pools = new ArrayList<>(); + StoragePool pool = new StoragePool(); + pool.setId(Guid.newGuid()); + pools.add(pool); + when(storagePoolDao.getAllForStorageDomain(storageDomainId)).thenReturn(pools); + when(storageDomainDAO.getForStoragePool(storageDomainId,pool.getId())).thenReturn(domain1); List<String> messages = CanDoActionTestUtils.runAndAssertCanDoActionFailure(command, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_CONNECTION_UNSUPPORTED_ACTION_FOR_DOMAINS_MAINTENANCE); @@ -522,11 +539,13 @@ 0); parameters.setStorageServerConnection(newNFSConnection); VDSReturnValue returnValueConnectSuccess = new VDSReturnValue(); + List<StoragePoolIsoMap> isoMaps = new ArrayList<>(); StoragePoolIsoMap map = new StoragePoolIsoMap(); + isoMaps.add(map); returnValueConnectSuccess.setSucceeded(true); StorageDomainDynamic domainDynamic = new StorageDomainDynamic(); StorageDomain domain = createDomain(domainDynamic); - doReturn(map).when(command).getStoragePoolIsoMap(domain); + doReturn(isoMaps).when(command).getStoragePoolIsoMap(domain); returnValueConnectSuccess.setReturnValue(domain); doReturn(returnValueConnectSuccess).when(command).getStatsForDomain(domain); doReturn(true).when(command).connectToStorage(); @@ -581,8 +600,10 @@ domains.add(domain); doReturn(domains).when(command).getStorageDomainsByConnId(newNFSConnection.getid()); StorageDomainDynamic domainDynamic = new StorageDomainDynamic(); + List<StoragePoolIsoMap> isoMaps = new ArrayList<>(); StoragePoolIsoMap map = new StoragePoolIsoMap(); - doReturn(map).when(command).getStoragePoolIsoMap(domain); + isoMaps.add(map); + doReturn(isoMaps).when(command).getStoragePoolIsoMap(domain); doReturn(returnValueUpdate).when(command).getStatsForDomain(domain); doReturn(true).when(command).connectToStorage(); doNothing().when(command).changeStorageDomainStatusInTransaction(StorageDomainStatus.Locked); @@ -610,8 +631,10 @@ StorageDomain domain = createDomain(domainDynamic); domains.add(domain); doReturn(domains).when(command).getStorageDomainsByConnId(newNFSConnection.getid()); + List<StoragePoolIsoMap> isomaps = new ArrayList<>(); StoragePoolIsoMap map = new StoragePoolIsoMap(); - doReturn(map).when(command).getStoragePoolIsoMap(domain); + isomaps.add(map); + doReturn(isomaps).when(command).getStoragePoolIsoMap(domain); doReturn(returnValueUpdate).when(command).getStatsForDomain(domain); doNothing().when(command).changeStorageDomainStatusInTransaction(StorageDomainStatus.Locked); doNothing().when(command).changeStorageDomainStatusInTransaction(StorageDomainStatus.Maintenance); -- To view, visit http://gerrit.ovirt.org/17070 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I19221ef1f32dd7117e020cf6750034d64b4b47db Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alissa Bonas <abo...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches