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

Reply via email to