- 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
This commit is contained in:
John Burwell 2013-08-01 00:11:40 -04:00
parent 1ae682de78
commit e2bcbe90c0
3 changed files with 11 additions and 5 deletions

View File

@ -290,6 +290,7 @@ import java.util.Set;
import java.util.UUID; import java.util.UUID;
import static com.cloud.utils.ReflectUtil.flattenProperties; import static com.cloud.utils.ReflectUtil.flattenProperties;
import static com.google.common.collect.Lists.newArrayList;
/** /**
* CitrixResourceBase encapsulates the calls to the XenServer Xapi process * CitrixResourceBase encapsulates the calls to the XenServer Xapi process
@ -7404,8 +7405,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
try { try {
final List<String> parameters = flattenProperties(s3, final List<String> parameters = newArrayList(flattenProperties(s3,
S3Utils.ClientOptions.class); S3Utils.ClientOptions.class));
parameters.addAll(Arrays.asList("operation", "put", "directory", parameters.addAll(Arrays.asList("operation", "put", "directory",
dir, "filename", filename, "iSCSIFlag", dir, "filename", filename, "iSCSIFlag",
iSCSIFlag.toString(), "bucket", s3.getBucketName(), "key", key)); iSCSIFlag.toString(), "bucket", s3.getBucketName(), "key", key));

View File

@ -81,6 +81,7 @@ import java.util.Set;
import java.util.UUID; import java.util.UUID;
import static com.cloud.utils.ReflectUtil.flattenProperties; import static com.cloud.utils.ReflectUtil.flattenProperties;
import static com.google.common.collect.Lists.newArrayList;
public class XenServerStorageProcessor implements StorageProcessor { public class XenServerStorageProcessor implements StorageProcessor {
private static final Logger s_logger = Logger.getLogger(XenServerStorageProcessor.class); private static final Logger s_logger = Logger.getLogger(XenServerStorageProcessor.class);
@ -1073,8 +1074,8 @@ public class XenServerStorageProcessor implements StorageProcessor {
try { try {
final List<String> parameters = flattenProperties(s3, final List<String> parameters = newArrayList(flattenProperties(s3,
S3Utils.ClientOptions.class); S3Utils.ClientOptions.class));
parameters.addAll(Arrays.asList("operation", "put", "directory", parameters.addAll(Arrays.asList("operation", "put", "directory",
dir, "filename", filename, "iSCSIFlag", dir, "filename", filename, "iSCSIFlag",
iSCSIFlag.toString(), "bucket", s3.getBucketName(), "key", key)); iSCSIFlag.toString(), "bucket", s3.getBucketName(), "key", key));

View File

@ -179,7 +179,7 @@ class S3Client(object):
max_error_retry, self.DEFAULT_MAX_ERROR_RETRY) max_error_retry, self.DEFAULT_MAX_ERROR_RETRY)
def build_canocialized_resource(self, bucket, key): def build_canocialized_resource(self, bucket, key):
return "/" + join([bucket, key], '/') return "/" + join([bucket, key], "/")
def noop_send_body(connection): def noop_send_body(connection):
pass pass
@ -256,6 +256,10 @@ class S3Client(object):
def put(self, bucket, key, src_filename): 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 = { headers = {
self.HEADER_CONTENT_MD5: compute_md5(src_filename), self.HEADER_CONTENT_MD5: compute_md5(src_filename),
self.HEADER_CONTENT_TYPE: 'application/octet-stream', self.HEADER_CONTENT_TYPE: 'application/octet-stream',