Updated Branches: refs/heads/master b727001f4 -> 67beef15c
CLOUDSTACK-3706:[Object_Store_Refactor] Failed to create template from stopped guest vm's root disk. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/67beef15 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/67beef15 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/67beef15 Branch: refs/heads/master Commit: 67beef15c9d6bc79c5d605af0d79b5a8b5e34e03 Parents: b727001 Author: Min Chen <[email protected]> Authored: Wed Aug 14 11:54:36 2013 -0700 Committer: Min Chen <[email protected]> Committed: Wed Aug 14 13:11:06 2013 -0700 ---------------------------------------------------------------------- .../storage/image/store/TemplateObject.java | 4 +++- .../storage/resource/NfsSecondaryStorageResource.java | 14 +++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/67beef15/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java ---------------------------------------------------------------------- diff --git a/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java b/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java index 174d5ca..b04ca6c 100644 --- a/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java +++ b/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java @@ -202,7 +202,9 @@ public class TemplateObject implements TemplateInfo { templateStoreDao.update(templateStoreRef.getId(), templateStoreRef); if (this.getDataStore().getRole() == DataStoreRole.Image) { VMTemplateVO templateVO = this.imageDao.findById(this.getId()); - templateVO.setFormat(newTemplate.getFormat()); + if (newTemplate.getFormat() != null) { + templateVO.setFormat(newTemplate.getFormat()); + } templateVO.setSize(newTemplate.getSize()); this.imageDao.update(templateVO.getId(), templateVO); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/67beef15/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java ---------------------------------------------------------------------- diff --git a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java index e45b685..f2b40f2 100755 --- a/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java +++ b/services/secondary-storage/src/org/apache/cloudstack/storage/resource/NfsSecondaryStorageResource.java @@ -737,13 +737,21 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S final String bucket = s3.getBucketName(); File srcFile = _storage.getFile(templatePath); + // guard the case where templatePath does not have file extension, since we are not completely sure + // about hypervisor, so we check each extension if (!srcFile.exists()) { srcFile = _storage.getFile(templatePath + ".qcow2"); if (!srcFile.exists()) { - return new CopyCmdAnswer("Can't find src file:" + templatePath); + srcFile = _storage.getFile(templatePath + ".vhd"); + if (!srcFile.exists()) { + srcFile = _storage.getFile(templatePath + ".ova"); + if (!srcFile.exists()) { + return new CopyCmdAnswer("Can't find src file:" + templatePath); + } + } } } - ImageFormat format = this.getTemplateFormat(templatePath); + ImageFormat format = this.getTemplateFormat(srcFile.getName()); String key = destData.getPath() + S3Utils.SEPARATOR + srcFile.getName(); putFile(s3, srcFile, bucket, key); @@ -1386,7 +1394,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S private Answer execute(ListTemplateCommand cmd) { if (!_inSystemVM) { - return new ListTemplateAnswer(null, null); + return new ListTemplateAnswer(null, null); } DataStoreTO store = cmd.getDataStore();
