From 14c41ea1331e4cae8a563c8bb8615b64362eefb2 Mon Sep 17 00:00:00 2001 From: Andrew Gaul Date: Tue, 10 Oct 2017 23:08:22 -0700 Subject: [PATCH] JCLOUDS-1337: GCS putBlob portable storage tiers --- .../GoogleCloudStorageBlobStore.java | 12 ++++--- .../BlobMetadataToObjectTemplate.java | 4 ++- .../functions/ObjectToBlobMetadata.java | 1 + .../domain/DomainResourceReferences.java | 33 ++++++++++++++++--- ...leCloudStorageBlobIntegrationLiveTest.java | 21 ++++++++++++ 5 files changed, 60 insertions(+), 11 deletions(-) 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 532a8de94a..a5f133820a 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 @@ -66,7 +66,6 @@ import org.jclouds.googlecloudstorage.domain.templates.BucketTemplate; import org.jclouds.googlecloudstorage.domain.templates.ComposeObjectTemplate; import org.jclouds.googlecloudstorage.domain.templates.ObjectAccessControlsTemplate; import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate; -import org.jclouds.googlecloudstorage.options.InsertObjectOptions; import org.jclouds.googlecloudstorage.options.ListObjectOptions; import org.jclouds.http.HttpResponseException; import org.jclouds.io.ContentMetadata; @@ -392,6 +391,8 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore { } ObjectTemplate destination = blobMetadataToObjectTemplate.apply(mpu.blobMetadata()); + // unset storage class because the subobjects store this state + destination.storageClass(DomainResourceReferences.StorageClass.STANDARD); if (mpu.putOptions().getBlobAccess() == BlobAccess.PUBLIC_READ) { ObjectAccessControls controls = ObjectAccessControls.builder() .entity("allUsers") @@ -421,10 +422,11 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore { public MultipartPart uploadMultipartPart(MultipartUpload mpu, int partNumber, Payload payload) { String partName = getMPUPartName(mpu, partNumber); long partSize = payload.getContentMetadata().getContentLength(); - // TODO: JCLOUDS-1337: use multipartUpload to set storage class - InsertObjectOptions insertOptions = new InsertObjectOptions().name(partName); - GoogleCloudStorageObject object = api.getObjectApi().simpleUpload(mpu.containerName(), - mpu.blobMetadata().getContentMetadata().getContentType(), partSize, payload, insertOptions); + ObjectTemplate template = blobMetadataToObjectTemplate.apply(mpu.blobMetadata()) + .name(partName) + .size(partSize); + GoogleCloudStorageObject object = api.getObjectApi().multipartUpload( + mpu.containerName(), template, payload); return MultipartPart.create(partNumber, partSize, object.etag(), object.updated()); } diff --git a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobMetadataToObjectTemplate.java b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobMetadataToObjectTemplate.java index e40ce49c70..2f40be3873 100644 --- a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobMetadataToObjectTemplate.java +++ b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/functions/BlobMetadataToObjectTemplate.java @@ -21,6 +21,7 @@ import static com.google.common.io.BaseEncoding.base64; import java.util.Map; import org.jclouds.blobstore.domain.BlobMetadata; +import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.StorageClass; import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate; import org.jclouds.io.ContentMetadata; @@ -47,7 +48,8 @@ public class BlobMetadataToObjectTemplate implements Function