From 0c6e87c701fcf08fad2fbb62d618be339d27eeca Mon Sep 17 00:00:00 2001 From: Edison Su Date: Fri, 3 May 2013 09:45:31 -0700 Subject: [PATCH] download template to primary storage works now --- .../cloudstack/storage/to/VolumeObjectTO.java | 2 +- .../storage/test/CloudStackTestNGBase.java | 14 ++++++++++++-- .../test/DirectAgentManagerSimpleImpl.java | 12 ++++++++++-- .../storage/test/volumeServiceTest.java | 16 ---------------- .../cloudstack/storage/volume/VolumeObject.java | 7 ++++++- .../storage/volume/VolumeServiceImpl.java | 2 +- 6 files changed, 30 insertions(+), 23 deletions(-) diff --git a/engine/api/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java b/engine/api/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java index 0b8846941ba..5e6ca2b79cb 100644 --- a/engine/api/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java +++ b/engine/api/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java @@ -41,7 +41,7 @@ public class VolumeObjectTO implements DataTO { public VolumeObjectTO(VolumeInfo volume) { this.uuid = volume.getUuid(); - this.path = volume.getUri(); + this.path = volume.getPath(); this.accountId = volume.getAccountId(); if (volume.getDataStore() != null) { this.dataStore = volume.getDataStore().getTO(); diff --git a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/CloudStackTestNGBase.java b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/CloudStackTestNGBase.java index 40267a70c8a..4ea3d3ff85f 100644 --- a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/CloudStackTestNGBase.java +++ b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/CloudStackTestNGBase.java @@ -36,6 +36,7 @@ public class CloudStackTestNGBase extends AbstractTestNGSpringContextTests { private String localStorageUuid; private String primaryStorageUrl; private String secondaryStorage; + private String imageInstallPath; private Transaction txn; private String s3AccessKey; @@ -66,13 +67,14 @@ public class CloudStackTestNGBase extends AbstractTestNGSpringContextTests { } @BeforeMethod(alwaysRun = true) + @Parameters({"devcloud-host-uuid", "devcloud-host-gateway", "devcloud-host-cidr", "devcloud-host-ip", "template-url", "devcloud-local-storage-uuid", - "primary-storage-want-to-add", "devcloud-secondary-storage", "s3-accesskey", "s3-secretkey", "s3-endpoint", "s3-template-bucket", "s3-usehttps"}) + "primary-storage-want-to-add", "devcloud-secondary-storage", "s3-accesskey", "s3-secretkey", "s3-endpoint", "s3-template-bucket", "s3-usehttps", "image-install-path"}) protected void setup(String hostuuid, String gateway, String cidr, String hostIp, String templateUrl, String localStorageUuid, String primaryStorage, String secondaryStorage, String s3_accessKey, String s3_secretKey, String s3_endpoint, String s3_template_bucket, - String s3_usehttps) { + String s3_usehttps, String imageInstallPath) { this.hostGuid = hostuuid; this.hostGateway = gateway; this.hostCidr = cidr; @@ -80,6 +82,7 @@ public class CloudStackTestNGBase extends AbstractTestNGSpringContextTests { this.templateUrl = templateUrl; this.localStorageUuid = localStorageUuid; this.primaryStorageUrl = primaryStorage; + this.imageInstallPath = imageInstallPath; this.setSecondaryStorage(secondaryStorage); // set S3 parameters this.s3AccessKey = s3_accessKey; @@ -125,6 +128,7 @@ public class CloudStackTestNGBase extends AbstractTestNGSpringContextTests { this.secondaryStorage = secondaryStorage; } + public String getS3AccessKey() { return s3AccessKey; } @@ -145,6 +149,12 @@ public class CloudStackTestNGBase extends AbstractTestNGSpringContextTests { return s3UseHttps; } + public String getImageInstallPath() { + return imageInstallPath; + } + public void setImageInstallPath(String imageInstallPath) { + this.imageInstallPath = imageInstallPath; + } } diff --git a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/DirectAgentManagerSimpleImpl.java b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/DirectAgentManagerSimpleImpl.java index 6941ff8cfdc..127c0e30a91 100644 --- a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/DirectAgentManagerSimpleImpl.java +++ b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/DirectAgentManagerSimpleImpl.java @@ -79,8 +79,16 @@ public class DirectAgentManagerSimpleImpl extends ManagerBase implements AgentMa @Override public Answer easySend(Long hostId, Command cmd) { - // TODO Auto-generated method stub - return null; + try { + return this.send(hostId, cmd); + } catch (AgentUnavailableException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OperationTimedoutException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; } protected void loadResource(Long hostId) { diff --git a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/volumeServiceTest.java b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/volumeServiceTest.java index 919ca35aefb..2152b2e64eb 100644 --- a/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/volumeServiceTest.java +++ b/engine/storage/integration-test/test/org/apache/cloudstack/storage/test/volumeServiceTest.java @@ -183,22 +183,6 @@ public class volumeServiceTest extends CloudStackTestNGBase { imageStore.setUuid(UUID.randomUUID().toString()); imageStore = imageStoreDao.persist(imageStore); - //primaryStore = createPrimaryDataStore(); - - //CreateVolumeAnswer createVolumeFromImageAnswer = new CreateVolumeAnswer(UUID.randomUUID().toString()); - - /*try { - Mockito.when(agentMgr.send(Mockito.anyLong(), Mockito.any(CreateVolumeFromBaseImageCommand.class))).thenReturn(createVolumeFromImageAnswer); - } catch (AgentUnavailableException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (OperationTimedoutException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - }*/ - - - //Mockito.when(primaryStoreDao.findById(Mockito.anyLong())).thenReturn(primaryStore); } @Override diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java index 31a2e6ffa57..d1d7b8d6b0f 100644 --- a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java +++ b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java @@ -244,7 +244,12 @@ public class VolumeObject implements VolumeInfo { @Override public String getPath() { - return this.volumeVO.getPath(); + if (this.dataStore.getRole() == DataStoreRole.Primary) { + return this.volumeVO.getPath(); + } else { + DataObjectInStore objInStore = this.ojbectInStoreMgr.findObject(this, dataStore); + return objInStore.getInstallPath(); + } } @Override diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java index 215973363bc..07a5430aa6d 100644 --- a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java +++ b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java @@ -376,7 +376,7 @@ public class VolumeServiceImpl implements VolumeService { templateOnPrimaryStoreObj.processEvent(Event.OperationFailed); VolumeApiResult result = new VolumeApiResult(volume); result.setResult(e.toString()); - caller.complete(result); + future.complete(result); } return; }