Arik Hadas has uploaded a new change for review.

Change subject: core: change iso prefix command to be vds broker command
......................................................................

core: change iso prefix command to be vds broker command

Change-Id: I272ce7b0407bf83bd47646941630362ecf0b18cc
Signed-off-by: Arik Hadas <aha...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeFloppyCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VdsAndPoolIDVDSParametersBase.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java
D 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IsoPrefixVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/ResetISOPathVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IsoPrefixVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
13 files changed, 110 insertions(+), 48 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/15/17815/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
index f28443e..1c9b858 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeDiskCommand.java
@@ -14,7 +14,7 @@
 
     public ChangeDiskCommand(T parameters) {
         super(parameters);
-        mCdImagePath = 
ImagesHandler.cdPathWindowsToLinux(parameters.getCdImagePath(), 
getVm().getStoragePoolId());
+        mCdImagePath = 
ImagesHandler.cdPathWindowsToLinux(parameters.getCdImagePath(), 
getVm().getStoragePoolId(), getVm().getRunOnVds());
     }
 
     public String getDiskName() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeFloppyCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeFloppyCommand.java
index 3fb2cc9..6b85d41 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeFloppyCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ChangeFloppyCommand.java
@@ -12,7 +12,7 @@
 
     public ChangeFloppyCommand(T parameters) {
         super(parameters);
-        mCdImagePath = 
ImagesHandler.cdPathWindowsToLinux(parameters.getCdImagePath(), 
getVm().getStoragePoolId());
+        mCdImagePath = 
ImagesHandler.cdPathWindowsToLinux(parameters.getCdImagePath(), 
getVm().getStoragePoolId(), getVm().getRunOnVds());
     }
 
     public String getDiskName() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
index e473507..c928f5f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
@@ -39,8 +39,8 @@
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.common.utils.VmDeviceType;
 import 
org.ovirt.engine.core.common.vdscommands.GetImageInfoVDSCommandParameters;
-import org.ovirt.engine.core.common.vdscommands.IrsBaseVDSCommandParameters;
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VdsAndPoolIDVDSParametersBase;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.utils.collections.MultiValueMapUtils;
@@ -367,10 +367,10 @@
         return snapshots;
     }
 
-    public static String cdPathWindowsToLinux(String windowsPath, Guid 
storagePoolId) {
+    public static String cdPathWindowsToLinux(String windowsPath, Guid 
storagePoolId, Guid vdsId) {
         return cdPathWindowsToLinux(windowsPath, (String) Backend.getInstance()
                 .getResourceManager()
-                .RunVdsCommand(VDSCommandType.IsoPrefix, new 
IrsBaseVDSCommandParameters(storagePoolId))
+                .RunVdsCommand(VDSCommandType.IsoPrefix, new 
VdsAndPoolIDVDSParametersBase(vdsId, storagePoolId))
                 .getReturnValue());
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
index 3aa1a08..aba65be 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
@@ -186,7 +186,7 @@
     }
 
     protected String cdPathWindowsToLinux(String url) {
-        return ImagesHandler.cdPathWindowsToLinux(url, 
getVm().getStoragePoolId());
+        return ImagesHandler.cdPathWindowsToLinux(url, 
getVm().getStoragePoolId(), getVdsId());
     }
 
     private void resumeVm() {
@@ -777,7 +777,7 @@
         }
 
         if (!vm.isAutoStartup() && !StringUtils.isEmpty(getVm().getIsoPath())
-                && 
getIsoDomainListSyncronizer().findActiveISODomain(getVm().getStoragePoolId()) 
!= null) {
+                && 
getIsoDomainListSyncronizer().findActiveISODomain(getVm().getStoragePoolId()) 
== null) {
             return 
failCanDoAction(VdcBllMessages.VM_CANNOT_RUN_FROM_CD_WITHOUT_ACTIVE_STORAGE_DOMAIN_ISO);
         }
 
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
index c70959d..2577a2d 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
@@ -65,7 +65,7 @@
     UploadImage("org.ovirt.engine.core.vdsbroker.irsbroker"),
     CreateSnapshot("org.ovirt.engine.core.vdsbroker.irsbroker"),
     MergeSnapshots("org.ovirt.engine.core.vdsbroker.irsbroker"),
-    IsoPrefix("org.ovirt.engine.core.vdsbroker.irsbroker"),
+    IsoPrefix("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     IsoDirectory("org.ovirt.engine.core.vdsbroker.irsbroker"),
     ResetIrs("org.ovirt.engine.core.vdsbroker.irsbroker"),
     GetIsoList("org.ovirt.engine.core.vdsbroker.irsbroker"),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VdsAndPoolIDVDSParametersBase.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VdsAndPoolIDVDSParametersBase.java
new file mode 100644
index 0000000..233458f
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VdsAndPoolIDVDSParametersBase.java
@@ -0,0 +1,24 @@
+package org.ovirt.engine.core.common.vdscommands;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class VdsAndPoolIDVDSParametersBase extends 
VdsIdVDSCommandParametersBase {
+    private Guid storagePoolId = Guid.Empty;
+
+    public VdsAndPoolIDVDSParametersBase(Guid vdsId, Guid storagePoolId) {
+        super(vdsId);
+        this.storagePoolId = storagePoolId;
+    }
+
+    public VdsAndPoolIDVDSParametersBase() {
+    }
+
+    public Guid getStoragePoolId() {
+        return storagePoolId;
+    }
+
+    @Override
+    public String toString() {
+        return String.format("%s, storagePoolId=%s", super.toString(), 
getStoragePoolId());
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java
index cea8b75..e5f8bf8 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IrsBrokerCommand.java
@@ -16,7 +16,6 @@
 import java.util.concurrent.TimeUnit;
 
 import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.businessentities.AsyncTaskStatus;
@@ -974,27 +973,6 @@
                 }
             }
             return spmStatus;
-        }
-
-        public String getIsoPrefix() {
-            synchronized (syncObj) {
-                if (StringUtils.isEmpty(mIsoPrefix)) {
-                    try {
-                        StoragePoolInfoReturnForXmlRpc returnValue = 
getIrsProxy().getStoragePoolInfo(
-                                _storagePoolId.toString());
-                        if 
(returnValue.mStoragePoolInfo.containsKey(IrsProperties.isoPrefix)) {
-                            mIsoPrefix = 
returnValue.mStoragePoolInfo.get(IrsProperties.isoPrefix).toString();
-                        }
-                    } catch (Exception ex) {
-                        log.errorFormat("IrsBroker::IsoPrefix Failed to get 
IRS statistics.");
-                    }
-                }
-                return mIsoPrefix;
-            }
-        }
-
-        public void setIsoPrefix(String value) {
-            mIsoPrefix = value;
         }
 
         public String getIsoDirectory() {
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IsoPrefixVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IsoPrefixVDSCommand.java
deleted file mode 100644
index 96bdda3..0000000
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/IsoPrefixVDSCommand.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.ovirt.engine.core.vdsbroker.irsbroker;
-
-import org.ovirt.engine.core.common.vdscommands.IrsBaseVDSCommandParameters;
-
-public class IsoPrefixVDSCommand<P extends IrsBaseVDSCommandParameters> 
extends IrsBrokerCommand<P> {
-    public IsoPrefixVDSCommand(P parameters) {
-        super(parameters);
-    }
-
-    @Override
-    protected void ExecuteIrsBrokerCommand() {
-
-        
getVDSReturnValue().setReturnValue(getCurrentIrsProxyData().getIsoPrefix());
-    }
-}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/ResetISOPathVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/ResetISOPathVDSCommand.java
index 977c082..8594ef8 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/ResetISOPathVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/ResetISOPathVDSCommand.java
@@ -1,9 +1,10 @@
 package org.ovirt.engine.core.vdsbroker.irsbroker;
 
 import org.ovirt.engine.core.common.vdscommands.IrsBaseVDSCommandParameters;
+import org.ovirt.engine.core.vdsbroker.vdsbroker.IsoPrefixVDSCommand;
 
-public class ResetISOPathVDSCommand<P extends IrsBaseVDSCommandParameters> 
extends IrsBrokerCommand<P> {
-    public ResetISOPathVDSCommand(P parameters) {
+public class ResetISOPathVDSCommand<T extends IrsBaseVDSCommandParameters> 
extends IrsBrokerCommand<T> {
+    public ResetISOPathVDSCommand(T parameters) {
         super(parameters);
     }
 
@@ -11,6 +12,6 @@
     // spm for this action
     @Override
     protected void executeVDSCommand() {
-        getCurrentIrsProxyData().setIsoPrefix("");
+        
IsoPrefixVDSCommand.clearCachedIsoPrefix(getParameters().getStoragePoolId());
     }
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
index 873e82b..4e1d310 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
@@ -15,6 +15,7 @@
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumesListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.IsoListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.OneUuidReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.irsbroker.StoragePoolInfoReturnForXmlRpc;
 
 
 public interface IVdsServer {
@@ -257,4 +258,6 @@
     StatusOnlyReturnForXmlRpc glusterHookRemove(String glusterCommand, String 
stage, String hookName);
 
     GlusterServicesReturnForXmlRpc glusterServicesAction(Guid serverId, String 
[] serviceList, String actionType);
+
+    StoragePoolInfoReturnForXmlRpc getStoragePoolInfo(String spUUID);
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IsoPrefixVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IsoPrefixVDSCommand.java
new file mode 100644
index 0000000..7e8d9fb
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IsoPrefixVDSCommand.java
@@ -0,0 +1,61 @@
+package org.ovirt.engine.core.vdsbroker.vdsbroker;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.ovirt.engine.core.common.vdscommands.VdsAndPoolIDVDSParametersBase;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.vdsbroker.irsbroker.IrsProperties;
+import 
org.ovirt.engine.core.vdsbroker.irsbroker.StoragePoolInfoReturnForXmlRpc;
+
+public class IsoPrefixVDSCommand<T extends VdsAndPoolIDVDSParametersBase> 
extends VdsBrokerCommand<T> {
+
+    private static Map<Guid, String> storagePoolId2IsoPrefix = new 
ConcurrentHashMap<Guid, String>();
+    private static Map<Guid, Object> storagePoolId2LockObj = new 
ConcurrentHashMap<Guid, Object>();
+
+    public IsoPrefixVDSCommand(T parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void ExecuteVdsBrokerCommand() {
+        getVDSReturnValue().setReturnValue(getIsoPrefix());
+    }
+
+    private String getIsoPrefix() {
+        Guid storagePoolId = getParameters().getStoragePoolId();
+        synchronized(getLockObjForStoragePool(storagePoolId)) {
+            if (storagePoolId2IsoPrefix.get(storagePoolId) == null) {
+                try {
+                    StoragePoolInfoReturnForXmlRpc returnValue =
+                            
getBroker().getStoragePoolInfo(storagePoolId.toString());
+
+                    if 
(returnValue.mStoragePoolInfo.containsKey(IrsProperties.isoPrefix)) {
+                        storagePoolId2IsoPrefix.put(storagePoolId,
+                                
returnValue.mStoragePoolInfo.get(IrsProperties.isoPrefix).toString());
+                    }
+                    else {
+                        return "";
+                    }
+                } catch (Exception ex) {
+                    log.errorFormat("IrsBroker::IsoPrefix Failed to get IRS 
statistics.");
+                    return "";
+                }
+            }
+            return storagePoolId2IsoPrefix.get(storagePoolId);
+        }
+    }
+
+    public static void clearCachedIsoPrefix(Guid storagePoolId) {
+        synchronized(getLockObjForStoragePool(storagePoolId)) {
+            storagePoolId2IsoPrefix.put(storagePoolId, null);
+        }
+    }
+
+    private static Object getLockObjForStoragePool(Guid storagePoolId) {
+        if (!storagePoolId2LockObj.containsKey(storagePoolId)) {
+            storagePoolId2LockObj.put(storagePoolId, new Object());
+        }
+        return storagePoolId2LockObj.get(storagePoolId);
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
index 9c18928..6a04cb7 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
@@ -244,4 +244,6 @@
     public Map<String,Object> glusterHookRemove(String glusterCommand, String 
stage, String hookName);
 
     public Map<String, Object> glusterServicesAction(String[] serviceNames, 
String action);
+
+    public Map<String, Object> getStoragePoolInfo(String spUUID);
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
index 024005d..1b1dca9 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
@@ -17,6 +17,7 @@
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumesListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.IsoListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.OneUuidReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.irsbroker.StoragePoolInfoReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.xmlrpc.XmlRpcRunTimeException;
 
 @SuppressWarnings({"rawtypes", "unchecked"})
@@ -1253,4 +1254,11 @@
             throw new XmlRpcRunTimeException(ute);
         }
     }
+
+    @Override
+    public StoragePoolInfoReturnForXmlRpc getStoragePoolInfo(String spUUID) {
+        Map<String, Object> xmlRpcReturnValue = 
vdsServer.getStoragePoolInfo(spUUID);
+        StoragePoolInfoReturnForXmlRpc wrapper = new 
StoragePoolInfoReturnForXmlRpc(xmlRpcReturnValue);
+        return wrapper;
+    }
 }


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

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

Reply via email to