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 2015/12/23 07:38:10 UTC
[1/6] jclouds git commit: JCLOUDS-844: Atmos putBlob ACLs
Repository: jclouds
Updated Branches:
refs/heads/master 37f307ecd -> 91b202f4e
JCLOUDS-844: Atmos putBlob ACLs
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/cc0d0d40
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/cc0d0d40
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/cc0d0d40
Branch: refs/heads/master
Commit: cc0d0d40c5076b835d88ba8cc11e3167f957d115
Parents: c0d72b6
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon Dec 21 17:48:16 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Tue Dec 22 00:46:33 2015 -0800
----------------------------------------------------------------------
.../jclouds/atmos/blobstore/AtmosBlobStore.java | 29 ++++++++++++--------
.../integration/AtmosIntegrationLiveTest.java | 6 ++++
2 files changed, 24 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/cc0d0d40/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/AtmosBlobStore.java
----------------------------------------------------------------------
diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/AtmosBlobStore.java b/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/AtmosBlobStore.java
index 9e11ff8..6516198 100644
--- a/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/AtmosBlobStore.java
+++ b/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/AtmosBlobStore.java
@@ -231,14 +231,7 @@ public class AtmosBlobStore extends BaseBlobStore {
*/
@Override
public String putBlob(final String container, final Blob blob) {
- final org.jclouds.atmos.options.PutOptions options = new org.jclouds.atmos.options.PutOptions();
- try {
- if (isPublic.getUnchecked(container + "/"))
- options.publicRead();
- } catch (CacheLoader.InvalidCacheLoadException e) {
- // nulls not permitted
- }
- return AtmosUtils.putBlob(sync, crypto, blob2Object, container, blob, options);
+ return putBlob(container, blob, PutOptions.NONE);
}
/**
@@ -248,8 +241,22 @@ public class AtmosBlobStore extends BaseBlobStore {
*/
@Override
public String putBlob(String container, Blob blob, PutOptions options) {
- // TODO implement options
- return putBlob(container, blob);
+ if (options.isMultipart()) {
+ throw new UnsupportedOperationException("Atmos does not support multipart uploads");
+ }
+ org.jclouds.atmos.options.PutOptions atmosOptions = new org.jclouds.atmos.options.PutOptions();
+ atmosOptions.publicNone();
+ try {
+ // TODO: not needed
+ if (isPublic.getUnchecked(container + "/"))
+ atmosOptions.publicRead();
+ } catch (CacheLoader.InvalidCacheLoadException e) {
+ // nulls not permitted
+ }
+ if (options.getBlobAccess() == BlobAccess.PUBLIC_READ) {
+ atmosOptions.publicRead();
+ }
+ return AtmosUtils.putBlob(sync, crypto, blob2Object, container, blob, atmosOptions);
}
/**
@@ -289,7 +296,7 @@ public class AtmosBlobStore extends BaseBlobStore {
}
@Override
- public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata) {
+ public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) {
throw new UnsupportedOperationException("Atmos does not support multipart uploads");
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/cc0d0d40/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java
index 1e5263c..ee2590d 100644
--- a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java
+++ b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/integration/AtmosIntegrationLiveTest.java
@@ -150,4 +150,10 @@ public class AtmosIntegrationLiveTest extends BaseBlobIntegrationTest {
public void testPutMultipartInputStream() throws Exception {
throw new SkipException("Atmos does not support multipart uploads");
}
+
+ @Override
+ @Test(groups = { "integration", "live" }, expectedExceptions = UnsupportedOperationException.class)
+ public void testPutBlobAccessMultipart() throws Exception {
+ super.testPutBlobAccessMultipart();
+ }
}
[5/6] jclouds git commit: JCLOUDS-844: S3 putBlob ACLs
Posted by ga...@apache.org.
JCLOUDS-844: S3 putBlob ACLs
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/85951e2a
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/85951e2a
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/85951e2a
Branch: refs/heads/master
Commit: 85951e2af9be28b8669c709b72676b834d0a1245
Parents: f926944
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon Dec 21 16:52:54 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Tue Dec 22 00:46:34 2015 -0800
----------------------------------------------------------------------
.../java/org/jclouds/s3/blobstore/S3BlobStore.java | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/85951e2a/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java b/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java
index a72f9e9..4cb5ea2 100644
--- a/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java
+++ b/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java
@@ -265,6 +265,9 @@ public class S3BlobStore extends BaseBlobStore {
}
PutObjectOptions options = new PutObjectOptions();
+ if (overrides.getBlobAccess() == BlobAccess.PUBLIC_READ) {
+ options = options.withAcl(CannedAccessPolicy.PUBLIC_READ);
+ }
return sync.putObject(container, blob2Object.apply(blob), options);
}
@@ -344,9 +347,13 @@ public class S3BlobStore extends BaseBlobStore {
}
@Override
- public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata) {
- String id = sync.initiateMultipartUpload(container, blob2ObjectMetadata.apply(blobMetadata));
- return MultipartUpload.create(container, blobMetadata.getName(), id, blobMetadata);
+ public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions overrides) {
+ PutObjectOptions options = new PutObjectOptions();
+ if (overrides.getBlobAccess() == BlobAccess.PUBLIC_READ) {
+ options = options.withAcl(CannedAccessPolicy.PUBLIC_READ);
+ }
+ String id = sync.initiateMultipartUpload(container, blob2ObjectMetadata.apply(blobMetadata), options);
+ return MultipartUpload.create(container, blobMetadata.getName(), id, blobMetadata, overrides);
}
@Override
[2/6] jclouds git commit: JCLOUDS-844: Portable putBlob ACLs
Posted by ga...@apache.org.
JCLOUDS-844: Portable putBlob ACLs
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/86491bc6
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/86491bc6
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/86491bc6
Branch: refs/heads/master
Commit: 86491bc6079cbf29ce885822c7e0147cc7d211d1
Parents: 37f307e
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon Dec 21 16:51:50 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Tue Dec 22 00:46:33 2015 -0800
----------------------------------------------------------------------
.../org/jclouds/s3/blobstore/S3BlobStore.java | 1 -
.../java/org/jclouds/blobstore/BlobStore.java | 2 +-
.../blobstore/config/LocalBlobStore.java | 6 ++-
.../blobstore/domain/MultipartUpload.java | 8 +++-
.../blobstore/internal/BaseBlobStore.java | 2 +-
.../jclouds/blobstore/options/PutOptions.java | 26 +++++++++++-
.../blobstore/util/ForwardingBlobStore.java | 4 +-
.../blobstore/util/ReadOnlyBlobStore.java | 2 +-
.../internal/BaseBlobIntegrationTest.java | 44 ++++++++++++++++++--
9 files changed, 81 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/86491bc6/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java b/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java
index 37f264e..a72f9e9 100644
--- a/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java
+++ b/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java
@@ -264,7 +264,6 @@ public class S3BlobStore extends BaseBlobStore {
return putMultipartBlob(container, blob, overrides);
}
- // TODO: Make use of options overrides
PutObjectOptions options = new PutObjectOptions();
return sync.putObject(container, blob2Object.apply(blob), options);
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/86491bc6/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java
index 3bbe708..4cbc92e 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java
@@ -333,7 +333,7 @@ public interface BlobStore {
long countBlobs(String container, ListContainerOptions options);
@Beta
- MultipartUpload initiateMultipartUpload(String container, BlobMetadata blob);
+ MultipartUpload initiateMultipartUpload(String container, BlobMetadata blob, PutOptions options);
@Beta
// TODO: take parts?
http://git-wip-us.apache.org/repos/asf/jclouds/blob/86491bc6/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
index 08a49e3..214dd5d 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
@@ -750,9 +750,9 @@ public final class LocalBlobStore implements BlobStore {
}
@Override
- public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata) {
+ public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) {
return MultipartUpload.create(container, blobMetadata.getName(), UUID.randomUUID().toString(),
- blobMetadata);
+ blobMetadata, options);
}
@Override
@@ -809,6 +809,8 @@ public final class LocalBlobStore implements BlobStore {
storageStrategy.removeBlob(mpu.containerName(), mpu.blobName() + "-" + part.partNumber());
}
+ setBlobAccess(mpu.containerName(), mpu.blobName(), mpu.putOptions().getBlobAccess());
+
return eTag;
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/86491bc6/blobstore/src/main/java/org/jclouds/blobstore/domain/MultipartUpload.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/domain/MultipartUpload.java b/blobstore/src/main/java/org/jclouds/blobstore/domain/MultipartUpload.java
index d70c3ec..94f2401 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/domain/MultipartUpload.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/domain/MultipartUpload.java
@@ -17,6 +17,8 @@
package org.jclouds.blobstore.domain;
+import org.jclouds.blobstore.options.PutOptions;
+
import com.google.auto.value.AutoValue;
@AutoValue
@@ -25,8 +27,10 @@ public abstract class MultipartUpload {
public abstract String blobName();
public abstract String id();
public abstract BlobMetadata blobMetadata();
+ public abstract PutOptions putOptions();
- public static MultipartUpload create(String containerName, String blobName, String id, BlobMetadata blobMetadata) {
- return new AutoValue_MultipartUpload(containerName, blobName, id, blobMetadata);
+ public static MultipartUpload create(String containerName, String blobName, String id, BlobMetadata blobMetadata,
+ PutOptions putOptions) {
+ return new AutoValue_MultipartUpload(containerName, blobName, id, blobMetadata, putOptions);
}
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/86491bc6/blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobStore.java
index 5876985..a608b18 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/internal/BaseBlobStore.java
@@ -290,7 +290,7 @@ public abstract class BaseBlobStore implements BlobStore {
// TODO: parallel uploads
@Beta
protected String putMultipartBlob(String container, Blob blob, PutOptions overrides) {
- MultipartUpload mpu = initiateMultipartUpload(container, blob.getMetadata());
+ MultipartUpload mpu = initiateMultipartUpload(container, blob.getMetadata(), overrides);
List<MultipartPart> parts = Lists.newArrayList();
long contentLength = blob.getMetadata().getContentMetadata().getContentLength();
MultipartUploadSlicingAlgorithm algorithm = new MultipartUploadSlicingAlgorithm(
http://git-wip-us.apache.org/repos/asf/jclouds/blob/86491bc6/blobstore/src/main/java/org/jclouds/blobstore/options/PutOptions.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/options/PutOptions.java b/blobstore/src/main/java/org/jclouds/blobstore/options/PutOptions.java
index 813aeaa..4cb8ca2 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/options/PutOptions.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/options/PutOptions.java
@@ -16,6 +16,10 @@
*/
package org.jclouds.blobstore.options;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import org.jclouds.blobstore.domain.BlobAccess;
+
/**
* Contains options supported in the put blob operation. <h2>
* Usage</h2> The recommended way to instantiate a PutOptions object is to statically import
@@ -30,6 +34,7 @@ public class PutOptions implements Cloneable {
public static final ImmutablePutOptions NONE = new ImmutablePutOptions(new PutOptions());
+ private BlobAccess blobAccess = BlobAccess.PRIVATE;
private boolean multipart = false;
public PutOptions() {
@@ -47,6 +52,16 @@ public class PutOptions implements Cloneable {
}
@Override
+ public BlobAccess getBlobAccess() {
+ return delegate.getBlobAccess();
+ }
+
+ @Override
+ public PutOptions setBlobAccess(BlobAccess blobAccess) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public boolean isMultipart() {
return delegate.isMultipart();
}
@@ -68,6 +83,15 @@ public class PutOptions implements Cloneable {
}
+ public BlobAccess getBlobAccess() {
+ return blobAccess;
+ }
+
+ public PutOptions setBlobAccess(BlobAccess blobAccess) {
+ this.blobAccess = checkNotNull(blobAccess);
+ return this;
+ }
+
public boolean isMultipart() {
return multipart;
}
@@ -115,6 +139,6 @@ public class PutOptions implements Cloneable {
@Override
public String toString() {
- return "[multipart=" + multipart + "]";
+ return "[multipart=" + multipart + ", blobAccess=" + blobAccess + "]";
}
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/86491bc6/blobstore/src/main/java/org/jclouds/blobstore/util/ForwardingBlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/util/ForwardingBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/util/ForwardingBlobStore.java
index 77f01f6..2a4631b 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/util/ForwardingBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/util/ForwardingBlobStore.java
@@ -220,8 +220,8 @@ public abstract class ForwardingBlobStore extends ForwardingObject
}
@Override
- public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata) {
- return delegate().initiateMultipartUpload(container, blobMetadata);
+ public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) {
+ return delegate().initiateMultipartUpload(container, blobMetadata, options);
}
@Override
http://git-wip-us.apache.org/repos/asf/jclouds/blob/86491bc6/blobstore/src/main/java/org/jclouds/blobstore/util/ReadOnlyBlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/util/ReadOnlyBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/util/ReadOnlyBlobStore.java
index 0fd06ee..3cfbb73 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/util/ReadOnlyBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/util/ReadOnlyBlobStore.java
@@ -136,7 +136,7 @@ public final class ReadOnlyBlobStore extends ForwardingBlobStore {
}
@Override
- public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata) {
+ public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) {
throw new UnsupportedOperationException("Read-only BlobStore");
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/86491bc6/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
----------------------------------------------------------------------
diff --git a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
index cdcdec6..0240602 100644
--- a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
+++ b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
@@ -674,6 +674,44 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest {
}
}
+ @Test(groups = { "integration", "live" })
+ public void testPutBlobAccess() throws Exception {
+ BlobStore blobStore = view.getBlobStore();
+ String containerName = getContainerName();
+ try {
+ String blobNamePrivate = "put-access-blob-name-private";
+ Blob blobPrivate = blobStore.blobBuilder(blobNamePrivate).payload(new byte[1]).build();
+ blobStore.putBlob(containerName, blobPrivate, new PutOptions().setBlobAccess(BlobAccess.PRIVATE));
+ assertThat(blobStore.getBlobAccess(containerName, blobNamePrivate)).isEqualTo(BlobAccess.PRIVATE);
+
+ String blobNamePublic = "put-access-blob-name-public";
+ Blob blobPublic = blobStore.blobBuilder(blobNamePublic).payload(new byte[1]).build();
+ blobStore.putBlob(containerName, blobPublic, new PutOptions().setBlobAccess(BlobAccess.PUBLIC_READ));
+ assertThat(blobStore.getBlobAccess(containerName, blobNamePublic)).isEqualTo(BlobAccess.PUBLIC_READ);
+ } finally {
+ returnContainer(containerName);
+ }
+ }
+
+ @Test(groups = { "integration", "live" })
+ public void testPutBlobAccessMultipart() throws Exception {
+ BlobStore blobStore = view.getBlobStore();
+ String containerName = getContainerName();
+ try {
+ String blobNamePrivate = "put-access-blob-name-private";
+ Blob blobPrivate = blobStore.blobBuilder(blobNamePrivate).payload(new byte[1]).build();
+ blobStore.putBlob(containerName, blobPrivate, new PutOptions().setBlobAccess(BlobAccess.PRIVATE).multipart(true));
+ assertThat(blobStore.getBlobAccess(containerName, blobNamePrivate)).isEqualTo(BlobAccess.PRIVATE);
+
+ String blobNamePublic = "put-access-blob-name-public";
+ Blob blobPublic = blobStore.blobBuilder(blobNamePublic).payload(new byte[1]).build();
+ blobStore.putBlob(containerName, blobPublic, new PutOptions().setBlobAccess(BlobAccess.PUBLIC_READ).multipart(true));
+ assertThat(blobStore.getBlobAccess(containerName, blobNamePublic)).isEqualTo(BlobAccess.PUBLIC_READ);
+ } finally {
+ returnContainer(containerName);
+ }
+ }
+
protected void checkUserMetadata(Map<String, String> userMetadata1, Map<String, String> userMetadata2) {
assertThat(userMetadata1).isEqualTo(userMetadata2);
}
@@ -900,7 +938,7 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest {
try {
String name = "blob-name";
Blob blob = blobStore.blobBuilder(name).build();
- MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata());
+ MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata(), new PutOptions());
List<MultipartPart> parts = blobStore.listMultipartUpload(mpu);
assertThat(parts).isEqualTo(ImmutableList.of());
@@ -926,7 +964,7 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest {
.payload(new byte[0]);
addContentMetadata(blobBuilder);
Blob blob = blobBuilder.build();
- MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata());
+ MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata(), new PutOptions());
ByteSource byteSource = TestUtils.randomByteSource().slice(0, 1);
Payload payload = Payloads.newByteSourcePayload(byteSource);
@@ -960,7 +998,7 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest {
.payload(new byte[0]);
addContentMetadata(blobBuilder);
Blob blob = blobBuilder.build();
- MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata());
+ MultipartUpload mpu = blobStore.initiateMultipartUpload(container, blob.getMetadata(), new PutOptions());
ByteSource byteSource = TestUtils.randomByteSource().slice(0, blobStore.getMinimumMultipartPartSize() + 1);
ByteSource byteSource1 = byteSource.slice(0, blobStore.getMinimumMultipartPartSize());
[3/6] jclouds git commit: JCLOUDS-844: Local blobstore putBlob ACLs
Posted by ga...@apache.org.
JCLOUDS-844: Local blobstore putBlob ACLs
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/c0d72b6f
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/c0d72b6f
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/c0d72b6f
Branch: refs/heads/master
Commit: c0d72b6f5316a78695fa4effcdc61946f2c83157
Parents: 86491bc
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon Dec 21 16:52:13 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Tue Dec 22 00:46:33 2015 -0800
----------------------------------------------------------------------
.../blobstore/config/LocalBlobStore.java | 49 ++++++++++----------
1 file changed, 25 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/c0d72b6f/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
index 214dd5d..06b3367 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
@@ -520,28 +520,7 @@ public final class LocalBlobStore implements BlobStore {
@Override
public String putBlob(String containerName, Blob blob) {
- checkNotNull(containerName, "containerName must be set");
- checkNotNull(blob, "blob must be set");
- String blobKey = blob.getMetadata().getName();
-
- logger.debug("Put blob with key [%s] to container [%s]", blobKey, containerName);
- if (!storageStrategy.containerExists(containerName)) {
- throw cnfe(containerName);
- }
-
- try {
- return storageStrategy.putBlob(containerName, blob);
- } catch (IOException e) {
- String message = e.getMessage();
- if (message != null && message.startsWith("MD5 hash code mismatch")) {
- HttpResponseException exception = returnResponseException(400);
- exception.initCause(e);
- throw exception;
- }
- logger.error(e, "An error occurred storing the new blob with name [%s] to container [%s].", blobKey,
- containerName);
- throw propagate(e);
- }
+ return putBlob(containerName, blob, PutOptions.NONE);
}
@Override
@@ -740,8 +719,30 @@ public final class LocalBlobStore implements BlobStore {
@Override
public String putBlob(String containerName, Blob blob, PutOptions options) {
- // TODO implement options
- return putBlob(containerName, blob);
+ checkNotNull(containerName, "containerName must be set");
+ checkNotNull(blob, "blob must be set");
+ String blobKey = blob.getMetadata().getName();
+
+ logger.debug("Put blob with key [%s] to container [%s]", blobKey, containerName);
+ if (!storageStrategy.containerExists(containerName)) {
+ throw cnfe(containerName);
+ }
+
+ try {
+ String eTag = storageStrategy.putBlob(containerName, blob);
+ setBlobAccess(containerName, blobKey, options.getBlobAccess());
+ return eTag;
+ } catch (IOException e) {
+ String message = e.getMessage();
+ if (message != null && message.startsWith("MD5 hash code mismatch")) {
+ HttpResponseException exception = returnResponseException(400);
+ exception.initCause(e);
+ throw exception;
+ }
+ logger.error(e, "An error occurred storing the new blob with name [%s] to container [%s].", blobKey,
+ containerName);
+ throw propagate(e);
+ }
}
@Override
[4/6] jclouds git commit: JCLOUDS-844: Azure putBlob ACLs
Posted by ga...@apache.org.
JCLOUDS-844: Azure putBlob ACLs
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/f9269449
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/f9269449
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/f9269449
Branch: refs/heads/master
Commit: f92694494956d84b58da36a9e4acb73bcbb03f37
Parents: cc0d0d4
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon Dec 21 17:54:10 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Tue Dec 22 00:46:34 2015 -0800
----------------------------------------------------------------------
.../org/jclouds/azureblob/blobstore/AzureBlobStore.java | 7 +++++--
.../integration/AzureBlobIntegrationLiveTest.java | 10 ++++++++++
2 files changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f9269449/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java
index 4702a05..c4ecf6c 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java
@@ -223,6 +223,9 @@ public class AzureBlobStore extends BaseBlobStore {
*/
@Override
public String putBlob(String container, Blob blob, PutOptions options) {
+ if (options.getBlobAccess() != BlobAccess.PRIVATE) {
+ throw new UnsupportedOperationException("blob access not supported by Azure");
+ }
if (options.isMultipart()) {
return putMultipartBlob(container, blob, options);
}
@@ -374,9 +377,9 @@ public class AzureBlobStore extends BaseBlobStore {
}
@Override
- public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata) {
+ public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) {
String uploadId = UUID.randomUUID().toString();
- return MultipartUpload.create(container, blobMetadata.getName(), uploadId, blobMetadata);
+ return MultipartUpload.create(container, blobMetadata.getName(), uploadId, blobMetadata, options);
}
@Override
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f9269449/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/integration/AzureBlobIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/integration/AzureBlobIntegrationLiveTest.java b/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/integration/AzureBlobIntegrationLiveTest.java
index a1f5538..1799d3d 100644
--- a/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/integration/AzureBlobIntegrationLiveTest.java
+++ b/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/integration/AzureBlobIntegrationLiveTest.java
@@ -55,6 +55,16 @@ public class AzureBlobIntegrationLiveTest extends BaseBlobIntegrationTest {
throw new SkipException("unsupported in Azure");
}
+ @Test(groups = { "integration", "live" }, expectedExceptions = UnsupportedOperationException.class)
+ public void testPutBlobAccess() throws Exception {
+ super.testPutBlobAccess();
+ }
+
+ @Test(groups = { "integration", "live" }, expectedExceptions = UnsupportedOperationException.class)
+ public void testPutBlobAccessMultipart() throws Exception {
+ super.testPutBlobAccessMultipart();
+ }
+
@Override
@Test
public void testGetRange() {
[6/6] jclouds git commit: JCLOUDS-844: Swift putBlob ACLs
Posted by ga...@apache.org.
JCLOUDS-844: Swift putBlob ACLs
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/91b202f4
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/91b202f4
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/91b202f4
Branch: refs/heads/master
Commit: 91b202f4ea7728f043987657259ea5115a648bf3
Parents: 85951e2
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon Dec 21 17:06:01 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Tue Dec 22 00:46:34 2015 -0800
----------------------------------------------------------------------
.../v1/blobstore/RegionScopedSwiftBlobStore.java | 16 +++++++++++-----
.../integration/SwiftBlobIntegrationLiveTest.java | 12 ++++++++++++
2 files changed, 23 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/91b202f4/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java
----------------------------------------------------------------------
diff --git a/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java b/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java
index 692401c..779665d 100644
--- a/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java
+++ b/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedSwiftBlobStore.java
@@ -237,6 +237,9 @@ public class RegionScopedSwiftBlobStore implements BlobStore {
@Override
public String putBlob(String container, Blob blob, PutOptions options) {
+ if (options.getBlobAccess() != BlobAccess.PRIVATE) {
+ throw new UnsupportedOperationException("blob access not supported by swift");
+ }
if (options.isMultipart()) {
return putMultipartBlob(container, blob, options);
}
@@ -410,16 +413,19 @@ public class RegionScopedSwiftBlobStore implements BlobStore {
}
@Override
- public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata) {
- return initiateMultipartUpload(container, blobMetadata, 0);
+ public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) {
+ if (options.getBlobAccess() != BlobAccess.PRIVATE) {
+ throw new UnsupportedOperationException("blob ACLs not supported in swift");
+ }
+ return initiateMultipartUpload(container, blobMetadata, 0, options);
}
- private MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, long partSize) {
+ private MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, long partSize, PutOptions options) {
Long contentLength = blobMetadata.getContentMetadata().getContentLength();
String uploadId = String.format("%s/slo/%.6f/%s/%s", blobMetadata.getName(),
System.currentTimeMillis() / 1000.0, contentLength == null ? Long.valueOf(0) : contentLength,
partSize);
- return MultipartUpload.create(container, blobMetadata.getName(), uploadId, blobMetadata);
+ return MultipartUpload.create(container, blobMetadata.getName(), uploadId, blobMetadata, options);
}
@Override
@@ -555,7 +561,7 @@ public class RegionScopedSwiftBlobStore implements BlobStore {
MultipartUploadSlicingAlgorithm algorithm = new MultipartUploadSlicingAlgorithm(
getMinimumMultipartPartSize(), getMaximumMultipartPartSize(), getMaximumNumberOfParts());
long partSize = algorithm.calculateChunkSize(contentLength);
- MultipartUpload mpu = initiateMultipartUpload(container, blob.getMetadata(), partSize);
+ MultipartUpload mpu = initiateMultipartUpload(container, blob.getMetadata(), partSize, overrides);
int partNumber = 1;
for (Payload payload : slicer.slice(blob.getPayload(), partSize)) {
MultipartPart part = uploadMultipartPart(mpu, partNumber, payload);
http://git-wip-us.apache.org/repos/asf/jclouds/blob/91b202f4/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/blobstore/integration/SwiftBlobIntegrationLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/blobstore/integration/SwiftBlobIntegrationLiveTest.java b/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/blobstore/integration/SwiftBlobIntegrationLiveTest.java
index e25306f..6f62958 100644
--- a/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/blobstore/integration/SwiftBlobIntegrationLiveTest.java
+++ b/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/blobstore/integration/SwiftBlobIntegrationLiveTest.java
@@ -80,6 +80,18 @@ public class SwiftBlobIntegrationLiveTest extends BaseBlobIntegrationTest {
}
@Override
+ @Test(expectedExceptions = UnsupportedOperationException.class)
+ public void testPutBlobAccess() throws Exception {
+ super.testPutBlobAccess();
+ }
+
+ @Override
+ @Test(expectedExceptions = UnsupportedOperationException.class)
+ public void testPutBlobAccessMultipart() throws Exception {
+ super.testPutBlobAccessMultipart();
+ }
+
+ @Override
protected long getMinimumMultipartBlobSize() {
return 1;
}