From c15370c7f467776c4905fc8ea4449ee6855996f8 Mon Sep 17 00:00:00 2001 From: Frank Natividad Date: Thu, 12 Jul 2018 16:48:18 -0700 Subject: [PATCH] Base patch for rewrite with predefinedAcl --- .../cloud/storage/spi/v1/HttpStorageRpc.java | 4 +-- .../cloud/storage/it/ITStorageTest.java | 28 +++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/google-cloud-clients/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpc.java b/google-cloud-clients/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpc.java index a52663e2641b..03db33dae835 100644 --- a/google-cloud-clients/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpc.java +++ b/google-cloud-clients/google-cloud-storage/src/main/java/com/google/cloud/storage/spi/v1/HttpStorageRpc.java @@ -792,7 +792,6 @@ private RewriteResponse rewrite(RewriteRequest req, String token) { if (userProject == null) { userProject = Option.USER_PROJECT.getString(req.targetOptions); } - String kmsKeyName = Option.KMS_KEY_NAME.getString(req.targetOptions); Long maxBytesRewrittenPerCall = req.megabytesRewrittenPerCall != null ? req.megabytesRewrittenPerCall * MEGABYTE : null; @@ -812,8 +811,9 @@ private RewriteResponse rewrite(RewriteRequest req, String token) { .setIfMetagenerationNotMatch(Option.IF_METAGENERATION_NOT_MATCH.getLong(req.targetOptions)) .setIfGenerationMatch(Option.IF_GENERATION_MATCH.getLong(req.targetOptions)) .setIfGenerationNotMatch(Option.IF_GENERATION_NOT_MATCH.getLong(req.targetOptions)) + .setDestinationPredefinedAcl(Option.PREDEFINED_ACL.getString(req.targetOptions)) .setUserProject(userProject) - .setDestinationKmsKeyName(kmsKeyName); + .setDestinationKmsKeyName(Option.KMS_KEY_NAME.getString(req.targetOptions)); HttpHeaders requestHeaders = rewrite.getRequestHeaders(); setEncryptionHeaders(requestHeaders, SOURCE_ENCRYPTION_KEY_PREFIX, req.sourceOptions); setEncryptionHeaders(requestHeaders, ENCRYPTION_KEY_PREFIX, req.targetOptions); diff --git a/google-cloud-clients/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITStorageTest.java b/google-cloud-clients/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITStorageTest.java index 0cb8776101e8..ce873f9ea717 100644 --- a/google-cloud-clients/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITStorageTest.java +++ b/google-cloud-clients/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITStorageTest.java @@ -896,6 +896,34 @@ public void testCopyBlob() { assertTrue(storage.delete(BUCKET, targetBlobName)); } + @Test + public void testCopyBlobWithPredefinedAcl() { + String sourceBlobName = "test-copy-blob-source"; + BlobId source = BlobId.of(BUCKET, sourceBlobName); + ImmutableMap metadata = ImmutableMap.of("k", "v"); + BlobInfo blob = BlobInfo.newBuilder(source) + .setContentType(CONTENT_TYPE) + .setMetadata(metadata) + .build(); + Blob remoteBlob = storage.create(blob, BLOB_BYTE_CONTENT); + assertNotNull(remoteBlob); + String targetBlobName = "test-copy-blob-target"; + Storage.CopyRequest req = Storage.CopyRequest.newBuilder() + .setSource(source) + .setTarget(BlobId.of(BUCKET, targetBlobName), + Storage.BlobTargetOption.predefinedAcl(Storage.PredefinedAcl.PUBLIC_READ)) + .build(); + CopyWriter copyWriter = storage.copy(req); + assertEquals(BUCKET, copyWriter.getResult().getBucket()); + assertEquals(targetBlobName, copyWriter.getResult().getName()); + assertEquals(CONTENT_TYPE, copyWriter.getResult().getContentType()); + assertEquals(metadata, copyWriter.getResult().getMetadata()); + assertNotNull(copyWriter.getResult().getAcl(User.ofAllUsers())); + assertTrue(copyWriter.isDone()); + assertTrue(remoteBlob.delete()); + assertTrue(storage.delete(BUCKET, targetBlobName)); + } + @Test public void testCopyBlobWithEncryptionKeys() { String sourceBlobName = "test-copy-blob-encryption-key-source";