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(

Reply via email to