Federico Simoncelli has uploaded a new change for review. Change subject: core: move pool changes inside event queue ......................................................................
core: move pool changes inside event queue Change-Id: I6b3f12432fe04d7e69ecd951e6c6281096bf9686 Signed-off-by: Federico Simoncelli <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ActivateStorageDomainCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DeactivateStorageDomainCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DetachStorageDomainFromPoolCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/eventqueue/EventType.java 5 files changed, 65 insertions(+), 50 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/99/28499/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ActivateStorageDomainCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ActivateStorageDomainCommand.java index 02746de..d61a93c 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ActivateStorageDomainCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ActivateStorageDomainCommand.java @@ -71,21 +71,15 @@ return returnValue; } - @Override - protected void executeCommand() { - final StoragePoolIsoMap map = - DbFacade.getInstance() - .getStoragePoolIsoMapDao() - .get(new StoragePoolIsoMapId(getParameters().getStorageDomainId(), - getParameters().getStoragePoolId())); + private void activateDomainTask() { + final StoragePoolIsoMap map = DbFacade.getInstance() + .getStoragePoolIsoMapDao().get(new StoragePoolIsoMapId(getParameters().getStorageDomainId(), + getParameters().getStoragePoolId())); // Master domain must not go through the Activating status. changeStorageDomainStatusInTransaction(map, (getStorageDomain().getStorageDomainType() == StorageDomainType.Master) ? StorageDomainStatus.Locked : StorageDomainStatus.Activating); - freeLock(); - log.infoFormat("ActivateStorage Domain. Before Connect all hosts to pool. Time:{0}", new Date()); - connectAllHostsToPool(); runVdsCommand(VDSCommandType.ActivateStorageDomain, new ActivateStorageDomainVDSCommandParameters(getStoragePool().getId(), getStorageDomain().getId())); log.infoFormat("ActivateStorage Domain. After Connect all hosts to pool. Time:{0}", new Date()); @@ -101,10 +95,30 @@ return null; } }); - refreshAllVdssInPool(); - log.infoFormat("ActivateStorage Domain. After change storage pool status in vds. Time:{0}", - new Date()); + refreshAllVdssInPool(); + } + + @Override + protected void executeCommand() { + log.infoFormat("ActivateStorage Domain. Before Connect all hosts to pool. Time:{0}", new Date()); + connectAllHostsToPool(); + + ((EventQueue) EjbUtils.findBean(BeanType.EVENTQUEUE_MANAGER, BeanProxyType.LOCAL)).submitEventSync( + new Event(getParameters().getStoragePoolId(), + getParameters().getStorageDomainId(), null, EventType.POOLOPERATION, ""), + new Callable<EventResult>() { + @Override + public EventResult call() { + activateDomainTask(); + return null; + } + } + ); + + freeLock(); + + log.infoFormat("ActivateStorage Domain. After change storage pool status in vds. Time:{0}", new Date()); if (getStorageDomain().getStorageDomainType() == StorageDomainType.ISO) { IsoDomainListSyncronizer.getInstance().refresheIsoDomainWhenActivateDomain(getStorageDomain().getId(), getStoragePool().getId()); @@ -114,17 +128,7 @@ private void refreshAllVdssInPool() { final List<Guid> vdsIdsToSetNonOperational = new ArrayList<Guid>(); - - ((EventQueue) EjbUtils.findBean(BeanType.EVENTQUEUE_MANAGER, BeanProxyType.LOCAL)).submitEventSync( - new Event(getParameters().getStoragePoolId(), getParameters().getStorageDomainId(), null, EventType.POOLREFRESH, ""), - new Callable<EventResult>() { - @Override - public EventResult call() { - runSynchronizeOperation(new RefreshPoolSingleAsyncOperationFactory(), vdsIdsToSetNonOperational); - return null; - } - } - ); + runSynchronizeOperation(new RefreshPoolSingleAsyncOperationFactory(), vdsIdsToSetNonOperational); for (Guid vdsId : vdsIdsToSetNonOperational) { SetNonOperationalVdsParameters tempVar = diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DeactivateStorageDomainCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DeactivateStorageDomainCommand.java index d5d9233..644765e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DeactivateStorageDomainCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DeactivateStorageDomainCommand.java @@ -239,7 +239,7 @@ if (!getParameters().isInactive()) { ((EventQueue) EjbUtils.findBean(BeanType.EVENTQUEUE_MANAGER, BeanProxyType.LOCAL)).submitEventSync( - new Event(getParameters().getStoragePoolId(), getParameters().getStorageDomainId(), null, EventType.POOLREFRESH, ""), + new Event(getParameters().getStoragePoolId(), getParameters().getStorageDomainId(), null, EventType.POOLOPERATION, ""), new Callable<EventResult>() { @Override public EventResult call() { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DetachStorageDomainFromPoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DetachStorageDomainFromPoolCommand.java index 54582b9..0c471ea 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DetachStorageDomainFromPoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DetachStorageDomainFromPoolCommand.java @@ -8,14 +8,23 @@ import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMap; import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMapId; import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.eventqueue.Event; +import org.ovirt.engine.core.common.eventqueue.EventQueue; +import org.ovirt.engine.core.common.eventqueue.EventResult; +import org.ovirt.engine.core.common.eventqueue.EventType; import org.ovirt.engine.core.common.vdscommands.DetachStorageDomainVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.IrsBaseVDSCommandParameters; 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.dal.dbbroker.DbFacade; +import org.ovirt.engine.core.utils.ejb.BeanProxyType; +import org.ovirt.engine.core.utils.ejb.BeanType; +import org.ovirt.engine.core.utils.ejb.EjbUtils; import org.ovirt.engine.core.utils.transaction.TransactionMethod; import org.ovirt.engine.core.utils.transaction.TransactionSupport; + +import java.util.concurrent.Callable; @NonTransactiveCommandAttribute(forceCompensation=true) public class DetachStorageDomainFromPoolCommand<T extends DetachStorageDomainFromPoolParameters> extends @@ -35,21 +44,18 @@ super(commandId); } - @Override - protected void executeCommand() { + private VDSReturnValue activateDomainTask() { log.info("Start detach storage domain"); changeStorageDomainStatusInTransaction(getStorageDomain().getStoragePoolIsoMapData(), StorageDomainStatus.Detaching); - log.info(" Detach storage domain: before connect"); - connectAllHostsToPool(); log.info(" Detach storage domain: after connect"); - VDSReturnValue returnValue = runVdsCommand( VDSCommandType.DetachStorageDomain, new DetachStorageDomainVDSCommandParameters(getParameters().getStoragePoolId(), getParameters().getStorageDomainId(), Guid.Empty, getStoragePool() .getmaster_domain_version())); + log.info(" Detach storage domain: after detach in vds"); disconnectAllHostsInPool(); @@ -68,13 +74,34 @@ return null; } }); - if (returnValue.getSucceeded() && getStorageDomain().getStorageDomainType() == StorageDomainType.ISO) { + + return returnValue; + } + + @Override + protected void executeCommand() { + log.info(" Detach storage domain: before connect"); + connectAllHostsToPool(); + + EventResult eventResult = ((EventQueue) EjbUtils.findBean(BeanType.EVENTQUEUE_MANAGER, BeanProxyType.LOCAL)).submitEventSync( + new Event(getParameters().getStoragePoolId(), getParameters().getStorageDomainId(), null, EventType.POOLOPERATION, ""), + new Callable<EventResult>() { + @Override + public EventResult call() { + VDSReturnValue returnValue = activateDomainTask(); + return new EventResult(returnValue.getSucceeded(), EventType.POOLOPERATION); + } + } + ); + + if (eventResult.isSuccess() && getStorageDomain().getStorageDomainType() == StorageDomainType.ISO) { // reset iso for this pool in vdsBroker cache runVdsCommand(VDSCommandType.ResetISOPath, new IrsBaseVDSCommandParameters(getParameters().getStoragePoolId())); } + log.info("End detach storage domain"); - setSucceeded(returnValue.getSucceeded()); + setSucceeded(eventResult.isSuccess()); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java index a20c9f8..187a09e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java @@ -7,7 +7,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import java.util.concurrent.Callable; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.context.CompensationContext; @@ -29,10 +28,6 @@ import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.errors.VdcBllMessages; -import org.ovirt.engine.core.common.eventqueue.Event; -import org.ovirt.engine.core.common.eventqueue.EventQueue; -import org.ovirt.engine.core.common.eventqueue.EventResult; -import org.ovirt.engine.core.common.eventqueue.EventType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dao.BaseDiskDao; @@ -44,9 +39,6 @@ import org.ovirt.engine.core.dao.SnapshotDao; import org.ovirt.engine.core.dao.StorageDomainOvfInfoDao; import org.ovirt.engine.core.dao.StorageServerConnectionDAO; -import org.ovirt.engine.core.utils.ejb.BeanProxyType; -import org.ovirt.engine.core.utils.ejb.BeanType; -import org.ovirt.engine.core.utils.ejb.EjbUtils; import org.ovirt.engine.core.utils.linq.LinqUtils; import org.ovirt.engine.core.utils.linq.Predicate; import org.ovirt.engine.core.utils.transaction.TransactionMethod; @@ -324,15 +316,7 @@ } protected void disconnectAllHostsInPool() { - ((EventQueue) EjbUtils.findBean(BeanType.EVENTQUEUE_MANAGER, BeanProxyType.LOCAL)).submitEventSync( - new Event(getParameters().getStoragePoolId(), getParameters().getStorageDomainId(), null, EventType.POOLREFRESH, ""), - new Callable<EventResult>() { - @Override - public EventResult call() { - runSynchronizeOperation(new RefreshStoragePoolAndDisconnectAsyncOperationFactory()); - return null; - } - }); + runSynchronizeOperation(new RefreshStoragePoolAndDisconnectAsyncOperationFactory()); } /** diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/eventqueue/EventType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/eventqueue/EventType.java index ec58c5c..9fe8e6e 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/eventqueue/EventType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/eventqueue/EventType.java @@ -9,5 +9,5 @@ DOMAINMONITORING, VDSCLEARCACHE, VDSCONNECTTOPOOL, - POOLREFRESH; + POOLOPERATION; } -- To view, visit http://gerrit.ovirt.org/28499 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6b3f12432fe04d7e69ecd951e6c6281096bf9686 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Federico Simoncelli <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
