From e2bcbe90c0befcaf784182d8406b25f2feb7b32b Mon Sep 17 00:00:00 2001 From: John Burwell Date: Thu, 1 Aug 2013 00:11:40 -0400 Subject: [PATCH] - CLOUDSTACK-3229: Fixes a think-o in the handling of unmodifiable collections and adds a rail in s3xen to raise an exception if the file being put does not exist --- .../cloud/hypervisor/xen/resource/CitrixResourceBase.java | 5 +++-- .../hypervisor/xen/resource/XenServerStorageProcessor.java | 5 +++-- scripts/vm/hypervisor/xenserver/s3xen | 6 +++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index e8a2512ba45..f0a696470c3 100644 --- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -290,6 +290,7 @@ import java.util.Set; import java.util.UUID; import static com.cloud.utils.ReflectUtil.flattenProperties; +import static com.google.common.collect.Lists.newArrayList; /** * CitrixResourceBase encapsulates the calls to the XenServer Xapi process @@ -7404,8 +7405,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe try { - final List parameters = flattenProperties(s3, - S3Utils.ClientOptions.class); + final List parameters = newArrayList(flattenProperties(s3, + S3Utils.ClientOptions.class)); parameters.addAll(Arrays.asList("operation", "put", "directory", dir, "filename", filename, "iSCSIFlag", iSCSIFlag.toString(), "bucket", s3.getBucketName(), "key", key)); diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java index 68a07c07ff1..9cd0b33b532 100644 --- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java +++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServerStorageProcessor.java @@ -81,6 +81,7 @@ import java.util.Set; import java.util.UUID; import static com.cloud.utils.ReflectUtil.flattenProperties; +import static com.google.common.collect.Lists.newArrayList; public class XenServerStorageProcessor implements StorageProcessor { private static final Logger s_logger = Logger.getLogger(XenServerStorageProcessor.class); @@ -1073,8 +1074,8 @@ public class XenServerStorageProcessor implements StorageProcessor { try { - final List parameters = flattenProperties(s3, - S3Utils.ClientOptions.class); + final List parameters = newArrayList(flattenProperties(s3, + S3Utils.ClientOptions.class)); parameters.addAll(Arrays.asList("operation", "put", "directory", dir, "filename", filename, "iSCSIFlag", iSCSIFlag.toString(), "bucket", s3.getBucketName(), "key", key)); diff --git a/scripts/vm/hypervisor/xenserver/s3xen b/scripts/vm/hypervisor/xenserver/s3xen index 4ee7c11402b..8c1d3d8136e 100644 --- a/scripts/vm/hypervisor/xenserver/s3xen +++ b/scripts/vm/hypervisor/xenserver/s3xen @@ -179,7 +179,7 @@ class S3Client(object): max_error_retry, self.DEFAULT_MAX_ERROR_RETRY) def build_canocialized_resource(self, bucket, key): - return "/" + join([bucket, key], '/') + return "/" + join([bucket, key], "/") def noop_send_body(connection): pass @@ -256,6 +256,10 @@ class S3Client(object): def put(self, bucket, key, src_filename): + if not os.path.isfile(src_filename): + raise Exception( + "Attempt to put " + src_filename + " that does not exist.") + headers = { self.HEADER_CONTENT_MD5: compute_md5(src_filename), self.HEADER_CONTENT_TYPE: 'application/octet-stream',