Moti Asayag has uploaded a new change for review.

Change subject: engine: Consider mac pool in data-center actions
......................................................................

engine: Consider mac pool in data-center actions

Change-Id: I2f988cf803bea7cbd9670b42e48f665706166795
Signed-off-by: Moti Asayag <masa...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
3 files changed, 57 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/81/28981/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
index 203f02d..e7e6982 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java
@@ -27,15 +27,24 @@
     }
 
     protected void addStoragePoolToDb() {
-        getStoragePool().setId(Guid.newGuid());
-        getStoragePool().setStatus(StoragePoolStatus.Uninitialized);
-        getStoragePoolDAO().save(getStoragePool());
+        final StoragePool storagePool = getStoragePool();
+        storagePool.setId(Guid.newGuid());
+        storagePool.setStatus(StoragePoolStatus.Uninitialized);
+
+        Guid requestedMacPoolId = storagePool.getMacPoolId();
+        Guid macPoolIdToUse = requestedMacPoolId == null ?
+                getMacPoolDAO().getDefaultPool().getId() :
+                requestedMacPoolId;
+
+        storagePool.setMacPoolId(macPoolIdToUse);
+        getStoragePoolDAO().save(storagePool);
     }
 
     @Override
     protected void executeCommand() {
         setDataCenterDetails();
         addStoragePoolToDb();
+
         getReturnValue().setActionReturnValue(getStoragePool().getId());
         addDefaultNetworks();
         setSucceeded(true);
@@ -76,18 +85,21 @@
     protected boolean canDoAction() {
         boolean result = true;
         // set version to latest supported version if not given
-        if (getStoragePool().getcompatibility_version().isNotValid()) {
-            getStoragePool().setcompatibility_version(Version.getLast());
+        final StoragePool storagePool = getStoragePool();
+
+        if (storagePool.getcompatibility_version().isNotValid()) {
+            storagePool.setcompatibility_version(Version.getLast());
         }
-        if (result && !(isStoragePoolUnique(getStoragePool().getName()))) {
+        if (!(isStoragePoolUnique(storagePool.getName()))) {
             result = false;
             
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_POOL_NAME_ALREADY_EXIST);
         } else if (!checkStoragePoolNameLengthValid()) {
             result = false;
-        } else if 
(!VersionSupport.checkVersionSupported(getStoragePool().getcompatibility_version()))
 {
+        } else if 
(!VersionSupport.checkVersionSupported(storagePool.getcompatibility_version())) 
{
             
addCanDoActionMessage(VersionSupport.getUnsupportedVersionMessage());
             result = false;
         }
+
         return result;
     }
 
@@ -98,4 +110,20 @@
                 getActionType().getActionGroup()));
     }
 
+    private class CreateMacPoolOrUseShared {
+        private final Guid requestedMacPoolId;
+        private Guid macPoolIdToUse;
+
+        public CreateMacPoolOrUseShared(Guid requestedMacPoolId) {
+            this.requestedMacPoolId = requestedMacPoolId;
+        }
+
+        public void calculateMacPoolId() {
+
+        }
+
+        public Guid getMacPoolIdToUse() {
+            return macPoolIdToUse;
+        }
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
index 216e431..c6ce5a7 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java
@@ -18,6 +18,7 @@
 import org.ovirt.engine.core.common.action.RemoveStorageDomainParameters;
 import org.ovirt.engine.core.common.action.StoragePoolParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.businessentities.MacPool;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
@@ -49,6 +50,7 @@
 public class RemoveStoragePoolCommand<T extends StoragePoolParametersBase> 
extends StorageHandlingCommandBase<T> {
 
     private Map<String, Pair<String, String>> sharedLocks;
+    private MacPool oldMacPool;
 
     public RemoveStoragePoolCommand(T parameters) {
         super(parameters);
@@ -85,8 +87,14 @@
             }
         }
 
+        final Guid storagePoolId = getStoragePoolId();
+        final Guid oldMacPoolId = getStoragePool().getMacPoolId();
+        oldMacPool = getMacPoolDAO().get(oldMacPoolId);
+
         removeDataCenter();
-        
MacPoolPerDc.getInstance().poolForDataCenter(getStoragePoolId()).freeMacs(macsToRemove);
+        
MacPoolPerDc.getInstance().poolForDataCenter(storagePoolId).freeMacs(macsToRemove);
+        MacPoolPerDc.getInstance().removePool(storagePoolId);
+
         setSucceeded(true);
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
index ce5f971..25f9c16 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java
@@ -41,6 +41,7 @@
 @NonTransactiveCommandAttribute
 public class UpdateStoragePoolCommand<T extends 
StoragePoolManagementParameter> extends
         StoragePoolManagementCommandBase<T>  implements 
RenamedEntityInfoProvider{
+
     public UpdateStoragePoolCommand(T parameters) {
         super(parameters);
     }
@@ -61,18 +62,24 @@
     @Override
     protected void executeCommand() {
         updateQuotaCache();
+        final StoragePool storagePool = getStoragePool();
         if (_oldStoragePool.getStatus() == StoragePoolStatus.Up) {
-            if (!StringUtils.equals(_oldStoragePool.getName(), 
getStoragePool().getName())) {
+            if (!StringUtils.equals(_oldStoragePool.getName(), 
storagePool.getName())) {
                 runVdsCommand(VDSCommandType.SetStoragePoolDescription,
-                    new SetStoragePoolDescriptionVDSCommandParameters(
-                        getStoragePool().getId(), getStoragePool().getName())
+                        new SetStoragePoolDescriptionVDSCommandParameters(
+                                storagePool.getId(), storagePool.getName())
                 );
             }
         }
 
-        copyUnchangedStoragePoolProperties(getStoragePool(), _oldStoragePool);
+        copyUnchangedStoragePoolProperties(storagePool, _oldStoragePool);
 
-        getStoragePoolDAO().updatePartial(getStoragePool());
+        Guid requestedMacPoolId = storagePool.getMacPoolId();
+        if (requestedMacPoolId != null) {
+            getStoragePool().setMacPoolId(requestedMacPoolId);
+        }
+
+        getStoragePoolDAO().updatePartial(storagePool);
 
         updateStoragePoolFormatType();
         setSucceeded(true);
@@ -216,6 +223,7 @@
         if (returnValue) {
             returnValue = validate(validator.isNotLocalfsWithDefaultCluster());
         }
+
         return returnValue;
     }
 


-- 
To view, visit http://gerrit.ovirt.org/28981
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2f988cf803bea7cbd9670b42e48f665706166795
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Moti Asayag <masa...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to