Daniel Erez has uploaded a new change for review. Change subject: core: introduce AddExistingBlockStorageDomainCommand ......................................................................
core: introduce AddExistingBlockStorageDomainCommand Introduce a new command for importing data block (iSCSI/FCP) domains. Change-Id: Icdebb7d390d14e88d84125dd412d938dacb72a2b Signed-off-by: Daniel Erez <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java 2 files changed, 82 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/01/29301/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommand.java new file mode 100644 index 0000000..e48f3ca --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommand.java @@ -0,0 +1,81 @@ +package org.ovirt.engine.core.bll.storage; + +import java.util.ArrayList; +import java.util.List; + +import org.ovirt.engine.core.common.action.StorageDomainManagementParameter; +import org.ovirt.engine.core.common.businessentities.LUNs; +import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend; +import org.ovirt.engine.core.common.vdscommands.GetVGInfoVDSCommandParameters; +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.utils.transaction.TransactionMethod; +import org.ovirt.engine.core.utils.transaction.TransactionSupport; + +public class AddExistingBlockStorageDomainCommand<T extends StorageDomainManagementParameter> extends + AddStorageDomainCommon<T> { + + /** + * Constructor for command creation when compensation is applied on startup + * + * @param commandId + */ + protected AddExistingBlockStorageDomainCommand(Guid commandId) { + super(commandId); + } + + public AddExistingBlockStorageDomainCommand(T parameters) { + super(parameters); + } + + @Override + protected void executeCommand() { + // Add StorageDomain object to DB and update statistics + addStorageDomainInDb(); + updateStorageDomainDynamicFromIrs(); + + // Add relevant LUNs to DB + List<LUNs> luns = getLUNsFromVgInfo(getStorageDomain().getStorage()); + saveLUNsInDB(luns); + + setSucceeded(true); + } + + @Override + protected boolean canAddDomain() { + return true; + } + + @SuppressWarnings("unchecked") + private List<LUNs> getLUNsFromVgInfo(String vgId) { + VDSReturnValue returnValue; + try { + returnValue = getVdsBroker().RunVdsCommand(VDSCommandType.GetVGInfo, + new GetVGInfoVDSCommandParameters(getParameters().getVdsId(), vgId)); + } catch (RuntimeException e) { + log.errorFormat("Could not get info for VG ID: {0}. Error message: {1}", + vgId, e.getMessage()); + return null; + } + + return (ArrayList<LUNs>) returnValue.getReturnValue(); + } + + private void saveLUNsInDB(final List<LUNs> luns) { + TransactionSupport.executeInNewTransaction(new TransactionMethod<Void>() { + @Override + public Void runInTransaction() { + for (LUNs lun : luns) { + proceedLUNInDb(lun, getStorageDomain().getStorageType(), getStorageDomain().getStorage()); + } + return null; + } + }); + } + + protected VDSBrokerFrontend getVdsBroker() { + return getBackend().getResourceManager(); + } + +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java index 305900d..ffa9b86 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java @@ -247,6 +247,7 @@ UpdateStoragePool(958, ActionGroup.EDIT_STORAGE_POOL_CONFIGURATION, QuotaDependency.NONE), FenceVdsManualy(959, ActionGroup.MANIPULATE_HOST, false, QuotaDependency.NONE), AddExistingFileStorageDomain(960, ActionGroup.CREATE_STORAGE_DOMAIN, QuotaDependency.NONE), + AddExistingBlockStorageDomain(961, ActionGroup.CREATE_STORAGE_DOMAIN, QuotaDependency.NONE), AddStorageServerConnection(1000, ActionGroup.CREATE_STORAGE_DOMAIN, QuotaDependency.NONE), UpdateStorageServerConnection(1001, ActionGroup.CREATE_STORAGE_DOMAIN, QuotaDependency.NONE), DisconnectStorageServerConnection(1002, ActionGroup.CREATE_STORAGE_DOMAIN, QuotaDependency.NONE), -- To view, visit http://gerrit.ovirt.org/29301 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icdebb7d390d14e88d84125dd412d938dacb72a2b Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Daniel Erez <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
