Michael Kublin has uploaded a new change for review. Change subject: engine: Improved host life cycle ......................................................................
engine: Improved host life cycle The following patch is introducing a folloing improvements: 1. By adding HostStoragePoolParametersBase class, it is possible to pass vds and storage pool to command and no need to perform additional query at command Benefit, reduced two queries at ConnectHostToStoragePoolServersCommand and at DisconnectHostFromStoragePoolServersCommand 2. From now DisconnectHostFromStoragePoolServersCommand running with out openning transaction, no need , DB is not updated so no need for global transaction. Benefit - less long transaction during moving host to maintainance 3. Removed canDoAction of DisconnectHostFromStoragePoolServersCommand, usually will be true, reason it is useless. Benefit - less useless code, less useless checks Change-Id: I14b07f4568a78e4da359c1ac3bfd8417550574d7 Signed-off-by: Michael Kublin <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintananceVdsCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ConnectHostToStoragePoolServersCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DisconnectHostFromStoragePoolServersCommand.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostStoragePoolParametersBase.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/StoragePoolParametersBase.java 6 files changed, 71 insertions(+), 40 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/08/11308/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java index 6549754..ea604c3 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitVdsOnUpCommand.java @@ -11,6 +11,7 @@ import org.ovirt.engine.core.bll.storage.StorageHandlingCommandBase; import org.ovirt.engine.core.bll.storage.StoragePoolStatusHandler; import org.ovirt.engine.core.common.AuditLogType; +import org.ovirt.engine.core.common.action.HostStoragePoolParametersBase; import org.ovirt.engine.core.common.action.ReconstructMasterParameters; import org.ovirt.engine.core.common.action.SetNonOperationalVdsParameters; import org.ovirt.engine.core.common.action.StoragePoolParametersBase; @@ -135,11 +136,9 @@ _connectStorageSucceeded = true; _connectPoolSucceeded = true; } else { - StoragePoolParametersBase tempStorageBaseParams = - new StoragePoolParametersBase(getVds().getStoragePoolId()); - tempStorageBaseParams.setVdsId(getVds().getId()); + HostStoragePoolParametersBase params = new HostStoragePoolParametersBase(getStoragePool(), getVds()); if (Backend.getInstance() - .runInternalAction(VdcActionType.ConnectHostToStoragePoolServers, tempStorageBaseParams) + .runInternalAction(VdcActionType.ConnectHostToStoragePoolServers, params) .getSucceeded()) { _connectStorageSucceeded = true; returnValue = connectHostToPool(); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintananceVdsCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintananceVdsCommand.java index 2657a55..9024a7e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintananceVdsCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintananceVdsCommand.java @@ -11,8 +11,8 @@ import org.ovirt.engine.core.bll.job.ExecutionHandler; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.VdcObjectType; +import org.ovirt.engine.core.common.action.HostStoragePoolParametersBase; import org.ovirt.engine.core.common.action.MaintananceVdsParameters; -import org.ovirt.engine.core.common.action.StoragePoolParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.businessentities.MigrationSupport; @@ -22,6 +22,7 @@ import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmsComparer; +import org.ovirt.engine.core.common.businessentities.storage_pool; import org.ovirt.engine.core.common.eventqueue.Event; import org.ovirt.engine.core.common.eventqueue.EventQueue; import org.ovirt.engine.core.common.eventqueue.EventResult; @@ -32,7 +33,6 @@ import org.ovirt.engine.core.common.vdscommands.SetVdsStatusVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.compat.TransactionScopeOption; import org.ovirt.engine.core.dal.VdcBllMessages; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dal.job.ExecutionMessageDirector; @@ -189,21 +189,19 @@ if (!Guid.Empty.equals(vds.getStoragePoolId())) { clearDomainCache(vds); - if (StoragePoolStatus.Uninitialized != DbFacade.getInstance() + storage_pool storage_pool = DbFacade.getInstance() .getStoragePoolDao() - .get(vds.getStoragePoolId()) - .getstatus() - && Backend - .getInstance() - .getResourceManager() - .RunVdsCommand( - VDSCommandType.DisconnectStoragePool, - new DisconnectStoragePoolVDSCommandParameters(vds.getId(), - vds.getStoragePoolId(), vds.getvds_spm_id())).getSucceeded()) { - StoragePoolParametersBase tempVar = new StoragePoolParametersBase(vds.getStoragePoolId()); - tempVar.setVdsId(vds.getId()); - tempVar.setTransactionScopeOption(TransactionScopeOption.RequiresNew); - Backend.getInstance().runInternalAction(VdcActionType.DisconnectHostFromStoragePoolServers, tempVar); + .get(vds.getStoragePoolId()); + if (StoragePoolStatus.Uninitialized != storage_pool + .getstatus()) { + Backend.getInstance().getResourceManager() + .RunVdsCommand( + VDSCommandType.DisconnectStoragePool, + new DisconnectStoragePoolVDSCommandParameters(vds.getId(), + vds.getStoragePoolId(), vds.getvds_spm_id())); + HostStoragePoolParametersBase params = + new HostStoragePoolParametersBase(storage_pool, vds); + Backend.getInstance().runInternalAction(VdcActionType.DisconnectHostFromStoragePoolServers, params); } } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ConnectHostToStoragePoolServersCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ConnectHostToStoragePoolServersCommand.java index 7609a9f..889f7f1 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ConnectHostToStoragePoolServersCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ConnectHostToStoragePoolServersCommand.java @@ -5,7 +5,7 @@ import org.ovirt.engine.core.bll.Backend; import org.ovirt.engine.core.bll.InternalCommandAttribute; import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; -import org.ovirt.engine.core.common.action.StoragePoolParametersBase; +import org.ovirt.engine.core.common.action.HostStoragePoolParametersBase; import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.common.businessentities.StorageServerConnections; import org.ovirt.engine.core.common.vdscommands.ConnectStorageServerVDSCommandParameters; @@ -19,11 +19,13 @@ */ @NonTransactiveCommandAttribute @InternalCommandAttribute -public class ConnectHostToStoragePoolServersCommand<T extends StoragePoolParametersBase> extends - ConnectHostToStoragePooServerCommandBase<T> { +public class ConnectHostToStoragePoolServersCommand extends + ConnectHostToStoragePooServerCommandBase<HostStoragePoolParametersBase> { - public ConnectHostToStoragePoolServersCommand(T parameters) { + public ConnectHostToStoragePoolServersCommand(HostStoragePoolParametersBase parameters) { super(parameters); + setStoragePool(parameters.getStoragePool()); + setVds(parameters.getVds()); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DisconnectHostFromStoragePoolServersCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DisconnectHostFromStoragePoolServersCommand.java index 14b124d..9e72940 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DisconnectHostFromStoragePoolServersCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/DisconnectHostFromStoragePoolServersCommand.java @@ -4,18 +4,21 @@ import org.ovirt.engine.core.bll.Backend; import org.ovirt.engine.core.bll.InternalCommandAttribute; -import org.ovirt.engine.core.common.action.StoragePoolParametersBase; -import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; +import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; +import org.ovirt.engine.core.common.action.HostStoragePoolParametersBase; import org.ovirt.engine.core.common.vdscommands.ConnectStorageServerVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; -import org.ovirt.engine.core.dal.VdcBllMessages; @InternalCommandAttribute -public class DisconnectHostFromStoragePoolServersCommand<T extends StoragePoolParametersBase> extends - ConnectHostToStoragePooServerCommandBase<T> { - public DisconnectHostFromStoragePoolServersCommand(T parameters) { +@NonTransactiveCommandAttribute +public class DisconnectHostFromStoragePoolServersCommand extends + ConnectHostToStoragePooServerCommandBase<HostStoragePoolParametersBase> { + + public DisconnectHostFromStoragePoolServersCommand(HostStoragePoolParametersBase parameters) { super(parameters); + setStoragePool(parameters.getStoragePool()); + setVds(parameters.getVds()); } @Override @@ -66,15 +69,5 @@ getExportConnections()); } } - } - - @Override - protected boolean canDoAction() { - boolean returnValue = checkStoragePool() - && CheckStoragePoolStatusNotEqual(StoragePoolStatus.Uninitialized, - VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_POOL_STATUS_ILLEGAL) - && InitializeVds(); - return returnValue; - } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostStoragePoolParametersBase.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostStoragePoolParametersBase.java new file mode 100644 index 0000000..7296310 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/HostStoragePoolParametersBase.java @@ -0,0 +1,34 @@ +package org.ovirt.engine.core.common.action; + +import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.businessentities.storage_pool; + +public class HostStoragePoolParametersBase extends StoragePoolParametersBase { + + private static final long serialVersionUID = 3203697290159189298L; + private VDS vds; + private storage_pool storagePool; + + public HostStoragePoolParametersBase(storage_pool storage_pool, VDS vds) { + super(storage_pool.getId(), vds.getId()); + this.vds = vds; + this.storagePool = storage_pool; + } + + public VDS getVds() { + return vds; + } + + public void setVds(VDS vds) { + this.vds = vds; + } + + public storage_pool getStoragePool() { + return storagePool; + } + + public void setStoragePool(storage_pool storage_pool) { + this.storagePool = storage_pool; + } + +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/StoragePoolParametersBase.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/StoragePoolParametersBase.java index 03f6831..a5b8624 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/StoragePoolParametersBase.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/StoragePoolParametersBase.java @@ -16,6 +16,11 @@ setStoragePoolId(storagePoolId); } + public StoragePoolParametersBase(Guid storagePoolId, Guid vdsId) { + this(storagePoolId); + this.vdsId = vdsId; + } + public Guid getVdsId() { return vdsId; } -- To view, visit http://gerrit.ovirt.org/11308 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I14b07f4568a78e4da359c1ac3bfd8417550574d7 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Michael Kublin <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
