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

Reply via email to