From 41f2a40dd0aaa80d6eec523d06e969f72568c370 Mon Sep 17 00:00:00 2001 From: JesseLovelace <43148100+JesseLovelace@users.noreply.github.com> Date: Wed, 13 Oct 2021 14:02:03 -0700 Subject: [PATCH 1/3] feat: add storage RPO samples --- google-cloud-examples/pom.xml | 2 +- .../CreateBucketWithTurboReplication.java | 39 +++++++++++++++++++ .../storage/buckets/GetBucketRpo.java | 23 +++++++++++ .../storage/buckets/SetAsyncTurboRpo.java | 25 ++++++++++++ .../storage/buckets/SetDefaultRpo.java | 25 ++++++++++++ .../storage/snippets/ITBucketSnippets.java | 32 +++++++++++++++ 6 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/CreateBucketWithTurboReplication.java create mode 100644 google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/GetBucketRpo.java create mode 100644 google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetAsyncTurboRpo.java create mode 100644 google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetDefaultRpo.java diff --git a/google-cloud-examples/pom.xml b/google-cloud-examples/pom.xml index 1fc6444a6a71..439031d54e39 100644 --- a/google-cloud-examples/pom.xml +++ b/google-cloud-examples/pom.xml @@ -76,7 +76,7 @@ com.google.cloud google-cloud-storage - 2.1.7 + 2.1.8-SNAPSHOT com.google.apis diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/CreateBucketWithTurboReplication.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/CreateBucketWithTurboReplication.java new file mode 100644 index 000000000000..6a2cbe9f0457 --- /dev/null +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/CreateBucketWithTurboReplication.java @@ -0,0 +1,39 @@ +package com.google.cloud.examples.storage.buckets; + +// [START storage_create_bucket_turbo_replication] +import com.google.cloud.storage.Bucket; +import com.google.cloud.storage.BucketInfo; +import com.google.cloud.storage.Rpo; +import com.google.cloud.storage.Storage; +import com.google.cloud.storage.StorageOptions; + +public class CreateBucketWithTurboReplication { + public static void createBucketWithTurboReplication(String projectId, String bucketName, String location) { + // The ID of your GCP project + // String projectId = "your-project-id"; + + // The ID to give your GCS bucket + // String bucketName = "your-unique-bucket-name"; + + // The dual-region location to create your bucket in + // String location = "NAM4" + + Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); + + Bucket bucket = + storage.create( + BucketInfo.newBuilder(bucketName) + .setLocation(location) + .setRpo(Rpo.ASYNC_TURBO) + .build()); + + System.out.println( + "Created bucket " + + bucket.getName() + + " in " + + bucket.getLocation() + + " with RPO setting" + + bucket.getRpo()); + } +} +// [END storage_create_bucket_turbo_replication] \ No newline at end of file diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/GetBucketRpo.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/GetBucketRpo.java new file mode 100644 index 000000000000..6adcf0cd1463 --- /dev/null +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/GetBucketRpo.java @@ -0,0 +1,23 @@ +package com.google.cloud.examples.storage.buckets; + +// [START storage_get_rpo] +import com.google.cloud.storage.Bucket; +import com.google.cloud.storage.Storage; +import com.google.cloud.storage.StorageOptions; + +public class GetBucketRpo { + public static void getBucketRpo(String projectId, String bucketName) { + // The ID of your GCP project + // String projectId = "your-project-id"; + + // The ID of your GCS bucket + // String bucketName = "your-unique-bucket-name"; + + Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); + Bucket bucket = storage.get(bucketName); + String rpo = bucket.getRpo().toString(); + + System.out.println("The RPO setting of bucket " + bucketName + " is " + rpo); + } +} +// [END storage_get_rpo] diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetAsyncTurboRpo.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetAsyncTurboRpo.java new file mode 100644 index 000000000000..d95ce6cb71ff --- /dev/null +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetAsyncTurboRpo.java @@ -0,0 +1,25 @@ +package com.google.cloud.examples.storage.buckets; + +// [START storage_set_rpo_async_turbo] +import com.google.cloud.storage.Bucket; +import com.google.cloud.storage.Rpo; +import com.google.cloud.storage.Storage; +import com.google.cloud.storage.StorageOptions; + +public class SetAsyncTurboRpo { + public static void setAsyncTurboRpo(String projectId, String bucketName) { + // The ID of your GCP project + // String projectId = "your-project-id"; + + // The ID of your GCS bucket + // String bucketName = "your-unique-bucket-name"; + + Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); + Bucket bucket = storage.get(bucketName); + + bucket.toBuilder().setRpo(Rpo.ASYNC_TURBO).build().update(); + + System.out.println("Turbo replication was enabled for " + bucketName); + } +} +// [END storage_set_rpo_async_turbo] \ No newline at end of file diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetDefaultRpo.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetDefaultRpo.java new file mode 100644 index 000000000000..00d313c4969f --- /dev/null +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetDefaultRpo.java @@ -0,0 +1,25 @@ +package com.google.cloud.examples.storage.buckets; + +// [START storage_set_rpo_default] +import com.google.cloud.storage.Bucket; +import com.google.cloud.storage.Rpo; +import com.google.cloud.storage.Storage; +import com.google.cloud.storage.StorageOptions; + +public class SetDefaultRpo { + public static void setDefaultRpo(String projectId, String bucketName) { + // The ID of your GCP project + // String projectId = "your-project-id"; + + // The ID of your GCS bucket + // String bucketName = "your-unique-bucket-name"; + + Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); + Bucket bucket = storage.get(bucketName); + + bucket.toBuilder().setRpo(Rpo.DEFAULT).build().update(); + + System.out.println("Replication was set to default for " + bucketName); + } +} +// [END storage_set_rpo_default] diff --git a/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java b/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java index 956c1c107b0e..49edc280cf4b 100644 --- a/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java +++ b/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java @@ -28,14 +28,18 @@ import com.google.cloud.examples.storage.buckets.ConfigureBucketCors; import com.google.cloud.examples.storage.buckets.CreateBucket; import com.google.cloud.examples.storage.buckets.CreateBucketWithStorageClassAndLocation; +import com.google.cloud.examples.storage.buckets.CreateBucketWithTurboReplication; import com.google.cloud.examples.storage.buckets.DeleteBucket; import com.google.cloud.examples.storage.buckets.DisableBucketVersioning; import com.google.cloud.examples.storage.buckets.DisableLifecycleManagement; import com.google.cloud.examples.storage.buckets.DisableRequesterPays; +import com.google.cloud.examples.storage.buckets.SetDefaultRpo; import com.google.cloud.examples.storage.buckets.EnableBucketVersioning; import com.google.cloud.examples.storage.buckets.EnableLifecycleManagement; import com.google.cloud.examples.storage.buckets.EnableRequesterPays; +import com.google.cloud.examples.storage.buckets.SetAsyncTurboRpo; import com.google.cloud.examples.storage.buckets.GetBucketMetadata; +import com.google.cloud.examples.storage.buckets.GetBucketRpo; import com.google.cloud.examples.storage.buckets.GetPublicAccessPrevention; import com.google.cloud.examples.storage.buckets.ListBucketIamMembers; import com.google.cloud.examples.storage.buckets.ListBuckets; @@ -541,4 +545,32 @@ public void testRequesterPays() throws Exception { DisableRequesterPays.disableRequesterPays(PROJECT_ID, BUCKET); assertFalse(storage.get(BUCKET).requesterPays()); } + + @Test + public void testRpo() throws Exception { + String rpoBucket = RemoteStorageHelper.generateBucketName(); + try { + CreateBucketWithTurboReplication.createBucketWithTurboReplication(PROJECT_ID, rpoBucket, "NAM4"); + Bucket bucket = storage.get(rpoBucket); + assertEquals("ASYNC_TURBO", bucket.getRpo().toString()); + + SetDefaultRpo.setDefaultRpo(PROJECT_ID, rpoBucket); + bucket = storage.get(rpoBucket); + assertEquals("DEFAULT", bucket.getRpo().toString()); + + SetAsyncTurboRpo.setAsyncTurboRpo(PROJECT_ID, rpoBucket); + bucket = storage.get(rpoBucket); + assertEquals("ASYNC_TURBO", bucket.getRpo().toString()); + + PrintStream standardOut = System.out; + final ByteArrayOutputStream snippetOutputCapture = new ByteArrayOutputStream(); + System.setOut(new PrintStream(snippetOutputCapture)); + GetBucketRpo.getBucketRpo(PROJECT_ID, rpoBucket); + String snippetOutput = snippetOutputCapture.toString(); + System.setOut(standardOut); + assertTrue(snippetOutput.contains("ASYNC_TURBO")); + } finally { + storage.delete(rpoBucket); + } + } } From 4fa5373b53c2f0bd4a308d9f4a3593ff8245cff8 Mon Sep 17 00:00:00 2001 From: JesseLovelace <43148100+JesseLovelace@users.noreply.github.com> Date: Fri, 14 Jan 2022 09:56:56 -0800 Subject: [PATCH 2/3] update dependnecy --- google-cloud-examples/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-examples/pom.xml b/google-cloud-examples/pom.xml index de4249ce1dd0..516acdea9d44 100644 --- a/google-cloud-examples/pom.xml +++ b/google-cloud-examples/pom.xml @@ -76,7 +76,7 @@ com.google.cloud google-cloud-storage - 2.2.2 + 2.3.0 com.google.apis From eeb7153222bdb2bcd983ebd4e8b6b74375412b92 Mon Sep 17 00:00:00 2001 From: JesseLovelace <43148100+JesseLovelace@users.noreply.github.com> Date: Fri, 14 Jan 2022 11:12:58 -0800 Subject: [PATCH 3/3] format --- .../CreateBucketWithTurboReplication.java | 47 ++++++++++--------- .../storage/buckets/GetBucketRpo.java | 20 ++++---- .../storage/buckets/SetAsyncTurboRpo.java | 22 ++++----- .../storage/buckets/SetDefaultRpo.java | 20 ++++---- .../storage/snippets/ITBucketSnippets.java | 37 ++++++++------- 5 files changed, 74 insertions(+), 72 deletions(-) diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/CreateBucketWithTurboReplication.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/CreateBucketWithTurboReplication.java index 6a2cbe9f0457..5407612e1111 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/CreateBucketWithTurboReplication.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/CreateBucketWithTurboReplication.java @@ -8,32 +8,33 @@ import com.google.cloud.storage.StorageOptions; public class CreateBucketWithTurboReplication { - public static void createBucketWithTurboReplication(String projectId, String bucketName, String location) { - // The ID of your GCP project - // String projectId = "your-project-id"; + public static void createBucketWithTurboReplication( + String projectId, String bucketName, String location) { + // The ID of your GCP project + // String projectId = "your-project-id"; - // The ID to give your GCS bucket - // String bucketName = "your-unique-bucket-name"; + // The ID to give your GCS bucket + // String bucketName = "your-unique-bucket-name"; - // The dual-region location to create your bucket in - // String location = "NAM4" + // The dual-region location to create your bucket in + // String location = "NAM4" - Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); + Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); - Bucket bucket = - storage.create( - BucketInfo.newBuilder(bucketName) - .setLocation(location) - .setRpo(Rpo.ASYNC_TURBO) - .build()); + Bucket bucket = + storage.create( + BucketInfo.newBuilder(bucketName) + .setLocation(location) + .setRpo(Rpo.ASYNC_TURBO) + .build()); - System.out.println( - "Created bucket " - + bucket.getName() - + " in " - + bucket.getLocation() - + " with RPO setting" - + bucket.getRpo()); - } + System.out.println( + "Created bucket " + + bucket.getName() + + " in " + + bucket.getLocation() + + " with RPO setting" + + bucket.getRpo()); + } } -// [END storage_create_bucket_turbo_replication] \ No newline at end of file +// [END storage_create_bucket_turbo_replication] diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/GetBucketRpo.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/GetBucketRpo.java index 6adcf0cd1463..e86a92b85c5c 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/GetBucketRpo.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/GetBucketRpo.java @@ -6,18 +6,18 @@ import com.google.cloud.storage.StorageOptions; public class GetBucketRpo { - public static void getBucketRpo(String projectId, String bucketName) { - // The ID of your GCP project - // String projectId = "your-project-id"; + public static void getBucketRpo(String projectId, String bucketName) { + // The ID of your GCP project + // String projectId = "your-project-id"; - // The ID of your GCS bucket - // String bucketName = "your-unique-bucket-name"; + // The ID of your GCS bucket + // String bucketName = "your-unique-bucket-name"; - Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); - Bucket bucket = storage.get(bucketName); - String rpo = bucket.getRpo().toString(); + Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); + Bucket bucket = storage.get(bucketName); + String rpo = bucket.getRpo().toString(); - System.out.println("The RPO setting of bucket " + bucketName + " is " + rpo); - } + System.out.println("The RPO setting of bucket " + bucketName + " is " + rpo); + } } // [END storage_get_rpo] diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetAsyncTurboRpo.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetAsyncTurboRpo.java index d95ce6cb71ff..a7dbc84a250e 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetAsyncTurboRpo.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetAsyncTurboRpo.java @@ -7,19 +7,19 @@ import com.google.cloud.storage.StorageOptions; public class SetAsyncTurboRpo { - public static void setAsyncTurboRpo(String projectId, String bucketName) { - // The ID of your GCP project - // String projectId = "your-project-id"; + public static void setAsyncTurboRpo(String projectId, String bucketName) { + // The ID of your GCP project + // String projectId = "your-project-id"; - // The ID of your GCS bucket - // String bucketName = "your-unique-bucket-name"; + // The ID of your GCS bucket + // String bucketName = "your-unique-bucket-name"; - Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); - Bucket bucket = storage.get(bucketName); + Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); + Bucket bucket = storage.get(bucketName); - bucket.toBuilder().setRpo(Rpo.ASYNC_TURBO).build().update(); + bucket.toBuilder().setRpo(Rpo.ASYNC_TURBO).build().update(); - System.out.println("Turbo replication was enabled for " + bucketName); - } + System.out.println("Turbo replication was enabled for " + bucketName); + } } -// [END storage_set_rpo_async_turbo] \ No newline at end of file +// [END storage_set_rpo_async_turbo] diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetDefaultRpo.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetDefaultRpo.java index 00d313c4969f..3aaefc4a4d63 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetDefaultRpo.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/storage/buckets/SetDefaultRpo.java @@ -7,19 +7,19 @@ import com.google.cloud.storage.StorageOptions; public class SetDefaultRpo { - public static void setDefaultRpo(String projectId, String bucketName) { - // The ID of your GCP project - // String projectId = "your-project-id"; + public static void setDefaultRpo(String projectId, String bucketName) { + // The ID of your GCP project + // String projectId = "your-project-id"; - // The ID of your GCS bucket - // String bucketName = "your-unique-bucket-name"; + // The ID of your GCS bucket + // String bucketName = "your-unique-bucket-name"; - Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); - Bucket bucket = storage.get(bucketName); + Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService(); + Bucket bucket = storage.get(bucketName); - bucket.toBuilder().setRpo(Rpo.DEFAULT).build().update(); + bucket.toBuilder().setRpo(Rpo.DEFAULT).build().update(); - System.out.println("Replication was set to default for " + bucketName); - } + System.out.println("Replication was set to default for " + bucketName); + } } // [END storage_set_rpo_default] diff --git a/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java b/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java index af71a754bf73..c3aab55ac4d5 100644 --- a/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java +++ b/google-cloud-examples/src/test/java/com/google/cloud/examples/storage/snippets/ITBucketSnippets.java @@ -33,11 +33,9 @@ import com.google.cloud.examples.storage.buckets.DisableBucketVersioning; import com.google.cloud.examples.storage.buckets.DisableLifecycleManagement; import com.google.cloud.examples.storage.buckets.DisableRequesterPays; -import com.google.cloud.examples.storage.buckets.SetDefaultRpo; import com.google.cloud.examples.storage.buckets.EnableBucketVersioning; import com.google.cloud.examples.storage.buckets.EnableLifecycleManagement; import com.google.cloud.examples.storage.buckets.EnableRequesterPays; -import com.google.cloud.examples.storage.buckets.SetAsyncTurboRpo; import com.google.cloud.examples.storage.buckets.GetBucketMetadata; import com.google.cloud.examples.storage.buckets.GetBucketRpo; import com.google.cloud.examples.storage.buckets.GetPublicAccessPrevention; @@ -49,7 +47,9 @@ import com.google.cloud.examples.storage.buckets.RemoveBucketIamConditionalBinding; import com.google.cloud.examples.storage.buckets.RemoveBucketIamMember; import com.google.cloud.examples.storage.buckets.RemoveBucketLabel; +import com.google.cloud.examples.storage.buckets.SetAsyncTurboRpo; import com.google.cloud.examples.storage.buckets.SetBucketWebsiteInfo; +import com.google.cloud.examples.storage.buckets.SetDefaultRpo; import com.google.cloud.examples.storage.buckets.SetPublicAccessPreventionEnforced; import com.google.cloud.examples.storage.buckets.SetPublicAccessPreventionInherited; import com.google.cloud.examples.storage.objects.DownloadRequesterPaysObject; @@ -529,25 +529,26 @@ public void testRequesterPays() throws Exception { public void testRpo() throws Exception { String rpoBucket = RemoteStorageHelper.generateBucketName(); try { - CreateBucketWithTurboReplication.createBucketWithTurboReplication(PROJECT_ID, rpoBucket, "NAM4"); - Bucket bucket = storage.get(rpoBucket); - assertEquals("ASYNC_TURBO", bucket.getRpo().toString()); + CreateBucketWithTurboReplication.createBucketWithTurboReplication( + PROJECT_ID, rpoBucket, "NAM4"); + Bucket bucket = storage.get(rpoBucket); + assertEquals("ASYNC_TURBO", bucket.getRpo().toString()); - SetDefaultRpo.setDefaultRpo(PROJECT_ID, rpoBucket); - bucket = storage.get(rpoBucket); - assertEquals("DEFAULT", bucket.getRpo().toString()); + SetDefaultRpo.setDefaultRpo(PROJECT_ID, rpoBucket); + bucket = storage.get(rpoBucket); + assertEquals("DEFAULT", bucket.getRpo().toString()); - SetAsyncTurboRpo.setAsyncTurboRpo(PROJECT_ID, rpoBucket); - bucket = storage.get(rpoBucket); - assertEquals("ASYNC_TURBO", bucket.getRpo().toString()); + SetAsyncTurboRpo.setAsyncTurboRpo(PROJECT_ID, rpoBucket); + bucket = storage.get(rpoBucket); + assertEquals("ASYNC_TURBO", bucket.getRpo().toString()); - PrintStream standardOut = System.out; - final ByteArrayOutputStream snippetOutputCapture = new ByteArrayOutputStream(); - System.setOut(new PrintStream(snippetOutputCapture)); - GetBucketRpo.getBucketRpo(PROJECT_ID, rpoBucket); - String snippetOutput = snippetOutputCapture.toString(); - System.setOut(standardOut); - assertTrue(snippetOutput.contains("ASYNC_TURBO")); + PrintStream standardOut = System.out; + final ByteArrayOutputStream snippetOutputCapture = new ByteArrayOutputStream(); + System.setOut(new PrintStream(snippetOutputCapture)); + GetBucketRpo.getBucketRpo(PROJECT_ID, rpoBucket); + String snippetOutput = snippetOutputCapture.toString(); + System.setOut(standardOut); + assertTrue(snippetOutput.contains("ASYNC_TURBO")); } finally { storage.delete(rpoBucket); }