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
----------------------------------------------------------------------