Repository: jclouds Updated Branches: refs/heads/master 2817b2772 -> 1937e200e
JCLOUDS-1336: GCS object-level storage class Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/1937e200 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/1937e200 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/1937e200 Branch: refs/heads/master Commit: 1937e200e3cc835edceec118f631442ecf92ef37 Parents: 2817b27 Author: Andrew Gaul <[email protected]> Authored: Fri Sep 1 11:55:58 2017 -0700 Committer: Andrew Gaul <[email protected]> Committed: Fri Sep 1 14:26:44 2017 -0700 ---------------------------------------------------------------------- .../blobstore/GoogleCloudStorageBlobStore.java | 1 + .../domain/templates/ObjectTemplate.java | 14 ++++++++++++++ .../features/ObjectApiLiveTest.java | 7 +++++++ 3 files changed, 22 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/1937e200/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 b58f25c..532a8de 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 @@ -421,6 +421,7 @@ 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); http://git-wip-us.apache.org/repos/asf/jclouds/blob/1937e200/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/templates/ObjectTemplate.java ---------------------------------------------------------------------- diff --git a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/templates/ObjectTemplate.java b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/templates/ObjectTemplate.java index 7a1bd13..ac392b7 100644 --- a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/templates/ObjectTemplate.java +++ b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/domain/templates/ObjectTemplate.java @@ -17,9 +17,12 @@ package org.jclouds.googlecloudstorage.domain.templates; +import static com.google.common.base.Preconditions.checkNotNull; + import java.util.List; import java.util.Map; +import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.StorageClass; import org.jclouds.googlecloudstorage.domain.ObjectAccessControls; import com.google.common.base.MoreObjects; @@ -38,6 +41,7 @@ public class ObjectTemplate { private String contentType; private String crc32c; private String md5Hash; + private StorageClass storageClass; private Map<String, String> metadata; private List<ObjectAccessControls> acl; @@ -107,6 +111,11 @@ public class ObjectTemplate { return this; } + public ObjectTemplate storageClass(StorageClass storageClass) { + this.storageClass = checkNotNull(storageClass); + return this; + } + public ObjectTemplate addAcl(ObjectAccessControls acl) { if (this.acl == null) { this.acl = Lists.newArrayList(); @@ -155,6 +164,10 @@ public class ObjectTemplate { return md5Hash; } + public StorageClass storageClass() { + return storageClass; + } + public String name() { return name; } @@ -179,6 +192,7 @@ public class ObjectTemplate { .add("contentType", contentType) .add("crc32c", crc32c) .add("md5Hash", md5Hash) + .add("storageClass", storageClass) .add("metadata", metadata) .add("acl", acl) .toString(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/1937e200/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java ---------------------------------------------------------------------- diff --git a/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java b/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java index 4bf48cb..b54a272 100644 --- a/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java +++ b/providers/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java @@ -34,6 +34,7 @@ import org.jclouds.googlecloudstorage.domain.Bucket; import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.DestinationPredefinedAcl; import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole; import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.Projection; +import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.StorageClass; import org.jclouds.googlecloudstorage.domain.GoogleCloudStorageObject; import org.jclouds.googlecloudstorage.domain.ListPageWithPrefixes; import org.jclouds.googlecloudstorage.domain.ObjectAccessControls; @@ -424,6 +425,7 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest { template.contentType("image/jpeg").addAcl(oacl).size(contentLength).name(MULTIPART_UPLOAD_OBJECT) .contentLanguage("en").contentDisposition("attachment").md5Hash(md5Hash) + .storageClass(StorageClass.NEARLINE) .customMetadata("custommetakey1", "custommetavalue1").crc32c(crc32c) .customMetadata(ImmutableMap.of("Adrian", "powderpuff")); @@ -436,6 +438,11 @@ public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest { assertThat(gcsObject.metadata()).contains(entry("custommetakey1", "custommetavalue1"), entry("Adrian", "powderpuff")).doesNotContainKey("adrian"); + gcsObject = api().getObject(BUCKET_NAME, MULTIPART_UPLOAD_OBJECT, null); + + assertThat(gcsObject).isNotNull(); + assertThat(gcsObject.storageClass()).isEqualTo(StorageClass.NEARLINE); + PayloadEnclosing impl = api().download(BUCKET_NAME, MULTIPART_UPLOAD_OBJECT); assertThat(ByteStreams2.toByteArrayAndClose(impl.getPayload().openStream())).isEqualTo(
