You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mc...@apache.org on 2013/05/07 06:33:07 UTC

[1/2] git commit: updated refs/heads/object_store to e7f6333

Updated Branches:
  refs/heads/object_store 0e2877295 -> e7f633320


Fix unit test to test NFS template download flow.

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

Branch: refs/heads/object_store
Commit: f5d5526d41d4889aa252714e2cc6006598c63993
Parents: 0d78209
Author: Min Chen <mi...@citrix.com>
Authored: Mon May 6 18:02:52 2013 -0700
Committer: Min Chen <mi...@citrix.com>
Committed: Mon May 6 18:02:52 2013 -0700

----------------------------------------------------------------------
 .../resource/NfsSecondaryStorageResource.java      |    2 +-
 .../storage/template/DownloadManagerImpl.java      |   15 ++++-
 .../MockLocalNfsSecondaryStorageResource.java      |   12 ++++
 .../cloudstack/storage/test/TemplateTest.java      |   48 +++++++++------
 .../integration-test/test/resource/testng.xml      |    3 +-
 .../resourcelimit/ResourceLimitManagerImpl.java    |    1 +
 .../cloud/storage/download/DownloadListener.java   |    2 +-
 .../cloud/template/HypervisorTemplateAdapter.java  |    5 +-
 8 files changed, 63 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5d5526d/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java b/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java
index d9f91a3..48854df 100755
--- a/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java
+++ b/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java
@@ -140,7 +140,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
     String _guid;
     String _role;
     Map<String, Object> _params;
-    StorageLayer _storage;
+    protected StorageLayer _storage;
     boolean _inSystemVM = false;
     boolean _sslCopy = false;
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5d5526d/core/src/com/cloud/storage/template/DownloadManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/storage/template/DownloadManagerImpl.java b/core/src/com/cloud/storage/template/DownloadManagerImpl.java
index 12914b0..53810e9 100755
--- a/core/src/com/cloud/storage/template/DownloadManagerImpl.java
+++ b/core/src/com/cloud/storage/template/DownloadManagerImpl.java
@@ -62,6 +62,7 @@ import com.cloud.agent.api.Answer;
 import com.cloud.agent.api.storage.DownloadAnswer;
 import com.cloud.agent.api.storage.Proxy;
 import com.cloud.agent.api.to.DataStoreTO;
+import com.cloud.agent.api.to.NfsTO;
 import com.cloud.agent.api.to.S3TO;
 import com.cloud.exception.InternalErrorException;
 import com.cloud.storage.Storage.ImageFormat;
@@ -245,6 +246,10 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager
         this.threadPool = threadPool;
     }
 
+    public void setStorageLayer(StorageLayer storage){
+        this._storage = storage;
+    }
+
     /**
      * Get notified of change of job status. Executed in context of downloader
      * thread
@@ -656,8 +661,16 @@ public class DownloadManagerImpl extends ManagerBase implements DownloadManager
             return new DownloadAnswer("Invalid Name", VMTemplateStorageResourceAssoc.Status.DOWNLOAD_ERROR);
         }
 
-        String installPathPrefix = cmd.getInstallPath();
         DataStoreTO dstore = cmd.getDataStore();
+        String installPathPrefix = cmd.getInstallPath();
+        // for NFS, we need to get mounted path
+        if (dstore instanceof NfsTO) {
+            if (ResourceType.TEMPLATE == resourceType) {
+                installPathPrefix = resource.getRootDir(cmd) + File.separator + installPathPrefix;
+            } else {
+                installPathPrefix = resource.getRootDir(cmd) + File.separator + installPathPrefix;
+            }
+        }
         String user = null;
         String password = null;
         if (cmd.getAuth() != null) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5d5526d/engine/storage/integration-test/test/org/apache/cloudstack/storage/MockLocalNfsSecondaryStorageResource.java
----------------------------------------------------------------------
diff --git a/engine/storage/integration-test/test/org/apache/cloudstack/storage/MockLocalNfsSecondaryStorageResource.java b/engine/storage/integration-test/test/org/apache/cloudstack/storage/MockLocalNfsSecondaryStorageResource.java
index a5c0af1..60dc161 100644
--- a/engine/storage/integration-test/test/org/apache/cloudstack/storage/MockLocalNfsSecondaryStorageResource.java
+++ b/engine/storage/integration-test/test/org/apache/cloudstack/storage/MockLocalNfsSecondaryStorageResource.java
@@ -18,10 +18,12 @@ import com.amazonaws.services.s3.model.S3ObjectSummary;
 import com.cloud.agent.api.Answer;
 import com.cloud.agent.api.Command;
 import com.cloud.agent.api.storage.DownloadAnswer;
+import com.cloud.agent.api.storage.ssCommand;
 import com.cloud.agent.api.to.DataStoreTO;
 import com.cloud.agent.api.to.NfsTO;
 import com.cloud.agent.api.to.S3TO;
 import com.cloud.agent.api.to.SwiftTO;
+import com.cloud.storage.JavaStorageLayer;
 import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
 import com.cloud.storage.resource.NfsSecondaryStorageResource;
 import com.cloud.storage.template.DownloadManagerImpl;
@@ -35,7 +37,17 @@ public class MockLocalNfsSecondaryStorageResource extends
 
     public MockLocalNfsSecondaryStorageResource(){
         _dlMgr = new DownloadManagerImpl();
+
+        _storage = new JavaStorageLayer();
         ((DownloadManagerImpl)_dlMgr).setThreadPool(Executors.newFixedThreadPool(10));
+        ((DownloadManagerImpl)_dlMgr).setStorageLayer(_storage);
+
+    }
+
+    @Override
+    public String getRootDir(ssCommand cmd) {
+        return "/mnt";
+
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5d5526d/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/TemplateTest.java
----------------------------------------------------------------------
diff --git a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/TemplateTest.java b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/TemplateTest.java
index ff540d9..541f668 100644
--- a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/TemplateTest.java
+++ b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/TemplateTest.java
@@ -1,5 +1,7 @@
 package org.apache.cloudstack.storage.test;
 
+import static org.testng.Assert.assertTrue;
+
 import java.util.UUID;
 import java.util.concurrent.ExecutionException;
 
@@ -8,6 +10,7 @@ import javax.inject.Inject;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataObject;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
 import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreProvider;
 import org.apache.cloudstack.engine.subsystem.api.storage.EndPointSelector;
 import org.apache.cloudstack.engine.subsystem.api.storage.TemplateDataFactory;
 import org.apache.cloudstack.engine.subsystem.api.storage.TemplateInfo;
@@ -15,6 +18,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.TemplateService;
 import org.apache.cloudstack.engine.subsystem.api.storage.TemplateService.TemplateApiResult;
 import org.apache.cloudstack.framework.async.AsyncCallFuture;
 import org.apache.cloudstack.storage.LocalHostEndpoint;
+import org.apache.cloudstack.storage.MockLocalNfsSecondaryStorageResource;
 import org.apache.cloudstack.storage.datastore.db.ImageStoreDao;
 import org.apache.cloudstack.storage.datastore.db.ImageStoreVO;
 import org.mockito.Mockito;
@@ -34,7 +38,7 @@ import com.cloud.storage.download.DownloadMonitorImpl;
 import com.cloud.utils.component.ComponentContext;
 
 @ContextConfiguration(locations={"classpath:/storageContext.xml"})
- 
+
 public class TemplateTest extends CloudStackTestNGBase {
 	@Inject
 	DataCenterDao dcDao;
@@ -55,7 +59,7 @@ public class TemplateTest extends CloudStackTestNGBase {
 	DownloadMonitorImpl downloadMonitor;
 	long dcId;
 	long templateId;
-	
+
 	@Test(priority = -1)
 	public void setUp() {
 		ComponentContext.initComponentsLifeCycle();
@@ -64,17 +68,17 @@ public class TemplateTest extends CloudStackTestNGBase {
 				null, null, NetworkType.Basic, null, null, true,  true, null, null);
 		dc = dcDao.persist(dc);
 		dcId = dc.getId();
-		
+
 		imageStore = new ImageStoreVO();
 		imageStore.setName("test");
 		imageStore.setDataCenterId(dcId);
-		imageStore.setProviderName("CloudStack ImageStore Provider");
+		imageStore.setProviderName(DataStoreProvider.NFS_IMAGE);
 		imageStore.setRole(DataStoreRole.Image);
 		imageStore.setUrl(this.getSecondaryStorage());
 		imageStore.setUuid(UUID.randomUUID().toString());
 		imageStore.setProtocol("nfs");
 		imageStore = imageStoreDao.persist(imageStore);
-		
+
 		VMTemplateVO image = new VMTemplateVO();
 		image.setTemplateType(TemplateType.USER);
 		image.setUrl(this.getTemplateUrl());
@@ -93,30 +97,36 @@ public class TemplateTest extends CloudStackTestNGBase {
 		image.setCrossZones(true);
 		image.setExtractable(true);
 
-		
+
 		//image.setImageDataStoreId(storeId);
 		image = templateDao.persist(image);
 		templateId = image.getId();
-		
-		Mockito.when(epSelector.select(Mockito.any(DataObject.class))).thenReturn(new LocalHostEndpoint());
-		//Mockito.when(downloadMonitor.isTemplateUpdateable(Mockito.anyLong(), Mockito.anyLong())).thenReturn(true);
+
+        // inject mockito
+        LocalHostEndpoint ep = new LocalHostEndpoint();
+        ep.setResource(new MockLocalNfsSecondaryStorageResource());
+        Mockito.when(epSelector.select(Mockito.any(DataObject.class))).thenReturn(ep);
+        Mockito.when(epSelector.select(Mockito.any(DataStore.class))).thenReturn(ep);
 	}
-	
+
 	@Test
 	public void registerTemplate() {
 		TemplateInfo template = templateFactory.getTemplate(templateId);
 		DataStore store = dataStoreMgr.getImageStore(dcId);
 		AsyncCallFuture<TemplateApiResult> future = new AsyncCallFuture<TemplateApiResult>();
 		templateSvr.createTemplateAsync(template, store, future);
-		try {
-			future.get();
-		} catch (InterruptedException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (ExecutionException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
+        try {
+            TemplateApiResult result = future.get();
+            assertTrue(result.isSuccess(), "failed to register template: " + result.getResult());
+        } catch (InterruptedException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+            assertTrue(false, e.getMessage());
+        } catch (ExecutionException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+             assertTrue(false, e.getMessage());
+        }
 	}
 
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5d5526d/engine/storage/integration-test/test/resource/testng.xml
----------------------------------------------------------------------
diff --git a/engine/storage/integration-test/test/resource/testng.xml b/engine/storage/integration-test/test/resource/testng.xml
index ad4829b..dbadae1 100644
--- a/engine/storage/integration-test/test/resource/testng.xml
+++ b/engine/storage/integration-test/test/resource/testng.xml
@@ -27,7 +27,8 @@
   <parameter name="primary-storage-want-to-add" value="nfs://192.168.56.2/opt/storage/primarynfs"/>
   <parameter name="devcloud-local-storage-uuid" value="cd10cac1-4772-92e5-5da6-c2bc16b1ce1b"/>
   <parameter name="devcloud-host-uuid" value="759ee4c9-a15a-297b-67c6-ac267d8aa429"/>
-  <parameter name="devcloud-secondary-storage" value="nfs://192.168.56.10/opt/storage/secondary"/>
+  <!-- <parameter name="devcloud-secondary-storage" value="nfs://192.168.56.10/opt/storage/secondary"/> -->
+  <parameter name="devcloud-secondary-storage" value="nfs://nfs2.lab.vmops.com:/export/home/edison/secondary" />
 
   <parameter name="s3-accesskey" value="OYAZXCAFUC1DAFOXNJWI"/>
   <parameter name="s3-secretkey" value="YHpRtzNDwl12DtrQmwRvdpnf2xK2AeVM30rXxQ=="/>

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5d5526d/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java b/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
index 49c3af1..818c5ab 100755
--- a/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
+++ b/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java
@@ -227,6 +227,7 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim
             s_logger.trace("Not incrementing resource count for system accounts, returning");
             return;
         }
+
         long numToIncrement = (delta.length == 0) ? 1 : delta[0].longValue();
 
         if (!updateResourceCountForAccount(accountId, type, true, numToIncrement)) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5d5526d/server/src/com/cloud/storage/download/DownloadListener.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/download/DownloadListener.java b/server/src/com/cloud/storage/download/DownloadListener.java
index 001b45d..84c51b1 100755
--- a/server/src/com/cloud/storage/download/DownloadListener.java
+++ b/server/src/com/cloud/storage/download/DownloadListener.java
@@ -99,7 +99,7 @@ public class DownloadListener implements Listener {
 
 	public static final Logger s_logger = Logger.getLogger(DownloadListener.class.getName());
 	public static final int SMALL_DELAY = 100;
-    public static final long STATUS_POLL_INTERVAL = 10000L;
+    public static final long STATUS_POLL_INTERVAL = 300000L; //10000L;
 
 	public static final String DOWNLOADED=Status.DOWNLOADED.toString();
 	public static final String NOT_DOWNLOADED=Status.NOT_DOWNLOADED.toString();

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f5d5526d/server/src/com/cloud/template/HypervisorTemplateAdapter.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/template/HypervisorTemplateAdapter.java b/server/src/com/cloud/template/HypervisorTemplateAdapter.java
index 7e560e3..af77c92 100755
--- a/server/src/com/cloud/template/HypervisorTemplateAdapter.java
+++ b/server/src/com/cloud/template/HypervisorTemplateAdapter.java
@@ -198,8 +198,9 @@ public class HypervisorTemplateAdapter extends TemplateAdapterBase implements Te
 		TemplateInfo template = context.template;
 		VMTemplateVO tmplt = this._tmpltDao.findById(template.getId());
 		long accountId = tmplt.getAccountId();
-		_resourceLimitMgr.incrementResourceCount(accountId, ResourceType.secondary_storage,
-		              	template.getSize());
+        if (template.getSize() != null) {
+            _resourceLimitMgr.incrementResourceCount(accountId, ResourceType.secondary_storage, template.getSize());
+        }
 
 		return null;
 	}


[2/2] git commit: updated refs/heads/object_store to e7f6333

Posted by mc...@apache.org.
Merge branch 'object_store' of https://git-wip-us.apache.org/repos/asf/cloudstack into object_store


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

Branch: refs/heads/object_store
Commit: e7f633320915a7c95d7fd89de6cff3590b9f9f37
Parents: f5d5526 0e28772
Author: Min Chen <mi...@citrix.com>
Authored: Mon May 6 21:21:40 2013 -0700
Committer: Min Chen <mi...@citrix.com>
Committed: Mon May 6 21:21:40 2013 -0700

----------------------------------------------------------------------
 .../CopyTemplateToPrimaryStorageAnswer.java        |   17 +
 .../subsystem/api/storage/CommandResult.java       |   52 --
 .../subsystem/api/storage/CopyCommandResult.java   |    2 +
 .../subsystem/api/storage/CreateCmdResult.java     |    3 +
 .../subsystem/api/storage/DataStoreDriver.java     |    1 +
 .../api/storage/PrimaryDataStoreDriver.java        |    1 +
 .../subsystem/api/storage/SnapshotResult.java      |    2 +
 .../subsystem/api/storage/TemplateService.java     |    1 +
 .../subsystem/api/storage/VolumeService.java       |    1 +
 .../storage/command/AttachPrimaryDataStoreCmd.java |    1 +
 .../cloudstack/storage/command/CommandResult.java  |   52 ++
 .../cloudstack/storage/command/CopyCmdAnswer.java  |    1 +
 .../CopyTemplateToPrimaryStorageAnswer.java        |   16 -
 .../storage/command/CreatePrimaryDataStoreCmd.java |    1 +
 .../cloudstack/storage/command/DeleteCommand.java  |   12 +-
 .../storage/command/DownloadCommand.java           |    1 +
 .../cloudstack/storage/to/VolumeObjectTO.java      |   11 +-
 .../cache/manager/StorageCacheManagerImpl.java     |    2 +-
 .../storage/motion/AncientDataMotionStrategy.java  |    2 +-
 .../storage/image/TemplateServiceImpl.java         |    4 +-
 .../storage/test/CloudStackTestNGBase.java         |   14 +-
 .../cloudstack/storage/test/SnapshotTest.java      |  373 +++++++++++++++
 .../cloudstack/storage/test/TemplateTest.java      |    5 +
 .../apache/cloudstack/storage/test/VolumeTest.java |   92 ++++-
 .../cloudstack/storage/test/volumeServiceTest.java |    2 +-
 .../storage/snapshot/SnapshotServiceImpl.java      |   12 +-
 .../snapshot/XenserverSnapshotStrategy.java        |    2 +-
 .../cloudstack/storage/LocalHostEndpoint.java      |   24 +-
 .../storage/datastore/DataObjectManager.java       |    2 +-
 .../storage/datastore/DataObjectManagerImpl.java   |    2 +-
 .../datastore/ObjectInDataStoreManagerImpl.java    |    4 +
 .../storage/image/motion/ImageMotionService.java   |    2 +-
 .../cloudstack/storage/volume/VolumeObject.java    |   10 +
 .../storage/volume/VolumeServiceImpl.java          |   30 +-
 .../xen/resource/CitrixResourceBase.java           |    3 +-
 .../xen/resource/XenServerStorageResource.java     |   79 ++--
 .../driver/CloudStackImageStoreDriverImpl.java     |    2 +-
 .../datastore/driver/S3ImageStoreDriverImpl.java   |    2 +-
 .../driver/SampleImageStoreDriverImpl.java         |    2 +-
 .../driver/SwiftImageStoreDriverImpl.java          |    2 +-
 .../CloudStackPrimaryDataStoreDriverImpl.java      |   31 +-
 .../driver/SamplePrimaryDataStoreDriverImpl.java   |    6 +-
 .../driver/SolidfirePrimaryDataStoreDriver.java    |    2 +-
 server/src/com/cloud/storage/TemplateProfile.java  |    1 +
 .../src/com/cloud/storage/VolumeManagerImpl.java   |    1 +
 .../cloud/template/HypervisorTemplateAdapter.java  |    2 +-
 .../com/cloud/template/TemplateManagerImpl.java    |    2 +-
 setup/db/db/schema-410to420.sql                    |    2 +-
 ui/scripts/system.js                               |  281 +++++++++--
 49 files changed, 948 insertions(+), 227 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e7f63332/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/TemplateTest.java
----------------------------------------------------------------------
diff --cc engine/storage/integration-test/test/org/apache/cloudstack/storage/test/TemplateTest.java
index 541f668,164cced..7749c07
--- a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/TemplateTest.java
+++ b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/TemplateTest.java
@@@ -57,9 -56,11 +60,11 @@@ public class TemplateTest extends Cloud
  	EndPointSelector epSelector;
  	@Inject
  	DownloadMonitorImpl downloadMonitor;
+ 
+ 	
  	long dcId;
  	long templateId;
 -	
 +
  	@Test(priority = -1)
  	public void setUp() {
  		ComponentContext.initComponentsLifeCycle();

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e7f63332/server/src/com/cloud/template/HypervisorTemplateAdapter.java
----------------------------------------------------------------------