Updated Branches:
  refs/heads/object_store cd318661d -> 389d7c1fa

if object is already stored in cache store, don't download again


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/389d7c1f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/389d7c1f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/389d7c1f

Branch: refs/heads/object_store
Commit: 389d7c1fa075441b6c6471b81dedbd8e8720fe88
Parents: cd31866
Author: Edison Su <[email protected]>
Authored: Thu May 16 14:33:36 2013 -0700
Committer: Edison Su <[email protected]>
Committed: Thu May 16 14:34:06 2013 -0700

----------------------------------------------------------------------
 .../cache/manager/StorageCacheManagerImpl.java     |   10 ++++++++++
 .../com/cloud/ovm/hypervisor/OvmResourceBase.java  |    1 -
 test/integration/smoke/test_volumes.py             |    9 +++------
 3 files changed, 13 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/389d7c1f/engine/storage/cache/src/org/apache/cloudstack/storage/cache/manager/StorageCacheManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/cache/src/org/apache/cloudstack/storage/cache/manager/StorageCacheManagerImpl.java
 
b/engine/storage/cache/src/org/apache/cloudstack/storage/cache/manager/StorageCacheManagerImpl.java
index 8fb898e..c76e67b 100644
--- 
a/engine/storage/cache/src/org/apache/cloudstack/storage/cache/manager/StorageCacheManagerImpl.java
+++ 
b/engine/storage/cache/src/org/apache/cloudstack/storage/cache/manager/StorageCacheManagerImpl.java
@@ -28,7 +28,9 @@ import javax.naming.ConfigurationException;
 import org.apache.cloudstack.engine.subsystem.api.storage.CopyCommandResult;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataMotionService;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataObject;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
+import 
org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine;
 import 
org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.Event;
 import org.apache.cloudstack.engine.subsystem.api.storage.Scope;
 import org.apache.cloudstack.engine.subsystem.api.storage.StorageCacheManager;
@@ -51,6 +53,8 @@ public class StorageCacheManagerImpl implements 
StorageCacheManager, Manager {
     List<StorageCacheAllocator> storageCacheAllocator;
     @Inject
     DataMotionService dataMotionSvr;
+    @Inject
+    ObjectInDataStoreManager objectInStoreMgr;
 
     @Override
     public DataStore getCacheStorage(Scope scope) {
@@ -133,6 +137,12 @@ public class StorageCacheManagerImpl implements 
StorageCacheManager, Manager {
        @Override
        public DataObject createCacheObject(DataObject data, Scope scope) {
                DataStore cacheStore = this.getCacheStorage(scope);
+               DataObjectInStore obj = objectInStoreMgr.findObject(data, 
cacheStore);
+               if (obj != null && obj.getState() == 
ObjectInDataStoreStateMachine.State.Ready) {
+                       s_logger.debug("there is already one in the cache 
store");
+                       return objectInStoreMgr.get(data, cacheStore);
+               }
+               
                //TODO: consider multiple thread to create
                DataObject objOnCacheStore = cacheStore.create(data);
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/389d7c1f/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java
----------------------------------------------------------------------
diff --git 
a/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java 
b/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java
index 61ac54e..59ba001 100755
--- a/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java
+++ b/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java
@@ -131,7 +131,6 @@ import com.cloud.vm.DiskProfile;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.State;
 import com.trilead.ssh2.SCPClient;
-import com.xensource.xenapi.Types.XenAPIException;
 
 public class OvmResourceBase implements ServerResource, HypervisorResource {
        private static final Logger s_logger = 
Logger.getLogger(OvmResourceBase.class);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/389d7c1f/test/integration/smoke/test_volumes.py
----------------------------------------------------------------------
diff --git a/test/integration/smoke/test_volumes.py 
b/test/integration/smoke/test_volumes.py
index 4bf8203..f29410d 100644
--- a/test/integration/smoke/test_volumes.py
+++ b/test/integration/smoke/test_volumes.py
@@ -19,6 +19,7 @@
 #Import Local Modules
 import marvin
 from marvin.cloudstackTestCase import *
+from marvin.cloudstackException import *
 from marvin.cloudstackAPI import *
 from marvin.remoteSSHClient import remoteSSHClient
 from marvin.integration.lib.utils import *
@@ -449,12 +450,8 @@ class TestVolumes(cloudstackTestCase):
         cmd.id = self.volume.id
         #Proper exception should be raised; deleting attach VM is not allowed
         #with self.assertRaises(Exception):
-        result = self.apiClient.deleteVolume(cmd)
-        self.assertEqual(
-                         result,
-                         None,
-                         "Check for delete download error while volume is 
attached"
-                         )
+        with self.assertRaises(cloudstackAPIException):
+            self.apiClient.deleteVolume(cmd)
         
     @attr(tags = ["advanced", "advancedns", "smoke"])    
     def test_05_detach_volume(self):

Reply via email to