You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2017/05/08 18:10:27 UTC

[25/50] jclouds git commit: JCLOUDS-844: GCS putBlob ACLs

JCLOUDS-844: GCS putBlob ACLs


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/57d162c6
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/57d162c6
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/57d162c6

Branch: refs/heads/master
Commit: 57d162c646b83ca69da804b95fef987b2ca352f0
Parents: 639e96d
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon Dec 21 23:01:01 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Mon Dec 21 23:25:00 2015 -0800

----------------------------------------------------------------------
 .../blobstore/GoogleCloudStorageBlobStore.java  | 44 ++++++++++++++------
 1 file changed, 32 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/57d162c6/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
----------------------------------------------------------------------
diff --git a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
index 5dbb7cd..a3b22d1 100644
--- a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
+++ b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
@@ -209,15 +209,7 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore {
     */
    @Override
    public String putBlob(String container, Blob blob) {
-      checkNotNull(blob.getPayload().getContentMetadata().getContentLength());
-      HashCode md5 = blob.getMetadata().getContentMetadata().getContentMD5AsHashCode();
-
-      ObjectTemplate template = blobMetadataToObjectTemplate.apply(blob.getMetadata());
-
-      if (md5 != null) {
-         template.md5Hash(base64().encode(md5.asBytes()));
-      }
-      return api.getObjectApi().multipartUpload(container, template, blob.getPayload()).etag();
+      return putBlob(container, blob, PutOptions.NONE);
    }
 
    @Override
@@ -225,7 +217,25 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore {
       if (options.isMultipart()) {
          return putMultipartBlob(container, blob, options);
       } else {
-         return putBlob(container, blob);
+         checkNotNull(blob.getPayload().getContentMetadata().getContentLength());
+
+         ObjectTemplate template = blobMetadataToObjectTemplate.apply(blob.getMetadata());
+
+         HashCode md5 = blob.getMetadata().getContentMetadata().getContentMD5AsHashCode();
+         if (md5 != null) {
+            template.md5Hash(base64().encode(md5.asBytes()));
+         }
+
+         if (options.getBlobAccess() == BlobAccess.PUBLIC_READ) {
+            ObjectAccessControls controls = ObjectAccessControls.builder()
+                  .entity("allUsers")
+                  .bucket(container)
+                  .role(READER)
+                  .build();
+            template.addAcl(controls);
+         }
+
+         return api.getObjectApi().multipartUpload(container, template, blob.getPayload()).etag();
       }
    }
 
@@ -342,9 +352,9 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore {
    }
 
    @Override
-   public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata) {
+   public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) {
       String uploadId = blobMetadata.getName();
-      return MultipartUpload.create(container, blobMetadata.getName(), uploadId, blobMetadata);
+      return MultipartUpload.create(container, blobMetadata.getName(), uploadId, blobMetadata, options);
    }
 
    @Override
@@ -364,7 +374,17 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore {
          builder.add(api.getObjectApi().getObject(mpu.containerName(),
                Strings2.urlEncode(getMPUPartName(mpu, part.partNumber()))));
       }
+
       ObjectTemplate destination = blobMetadataToObjectTemplate.apply(mpu.blobMetadata());
+      if (mpu.putOptions().getBlobAccess() == BlobAccess.PUBLIC_READ) {
+         ObjectAccessControls controls = ObjectAccessControls.builder()
+               .entity("allUsers")
+               .bucket(mpu.containerName())
+               .role(READER)
+               .build();
+         destination.addAcl(controls);
+      }
+
       ComposeObjectTemplate template = ComposeObjectTemplate.builder().fromGoogleCloudStorageObject(builder.build())
             .destination(destination).build();
       return api.getObjectApi().composeObjects(mpu.containerName(), Strings2.urlEncode(mpu.blobName()), template)