From 1d402e025fc230ba38c80ecc7374c3c723bb4dc1 Mon Sep 17 00:00:00 2001 From: Varun Naik Date: Mon, 22 Jul 2024 17:35:00 -0700 Subject: [PATCH 1/3] feat(spanner): add samples for instance partitions --- .../CreateInstancePartitionSample.java | 77 +++++++++++++++++++ .../CreateInstancePartitionSampleIT.java | 49 ++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 samples/snippets/src/main/java/com/example/spanner/CreateInstancePartitionSample.java create mode 100644 samples/snippets/src/test/java/com/example/spanner/CreateInstancePartitionSampleIT.java diff --git a/samples/snippets/src/main/java/com/example/spanner/CreateInstancePartitionSample.java b/samples/snippets/src/main/java/com/example/spanner/CreateInstancePartitionSample.java new file mode 100644 index 00000000000..0c07132aa7d --- /dev/null +++ b/samples/snippets/src/main/java/com/example/spanner/CreateInstancePartitionSample.java @@ -0,0 +1,77 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.spanner; + +// [START spanner_create_instance_partition] + +import com.google.cloud.spanner.Spanner; +import com.google.cloud.spanner.SpannerOptions; +import com.google.cloud.spanner.admin.instance.v1.InstanceAdminClient; +import com.google.spanner.admin.instance.v1.CreateInstancePartitionRequest; +import com.google.spanner.admin.instance.v1.InstanceConfigName; +import com.google.spanner.admin.instance.v1.InstanceName; +import com.google.spanner.admin.instance.v1.InstancePartition; +import java.util.concurrent.ExecutionException; + +class CreateInstancePartitionSample { + + static void createInstancePartition() { + // TODO(developer): Replace these variables before running the sample. + String projectId = "my-project"; + String instanceId = "my-instance"; + String instancePartitionId = "my-instance-partition"; + createInstancePartition(projectId, instanceId, instancePartitionId); + } + + static void createInstancePartition(String projectId, String instanceId, String instancePartitionId) { + // Set instance partition configuration. + int nodeCount = 1; + String displayName = "Descriptive name"; + + // Create an InstancePartition object that will be used to create the instance partition. + InstancePartition instancePartition = + InstancePartition.newBuilder() + .setDisplayName(displayName) + .setNodeCount(nodeCount) + .setConfig(InstanceConfigName.of(projectId, "nam3").toString()) + .build(); + + try (Spanner spanner = + SpannerOptions.newBuilder() + .setProjectId(projectId) + .build() + .getService(); + InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) { + + // Wait for the createInstancePartition operation to finish. + InstancePartition createdInstancePartition = instanceAdminClient.createInstancePartitionAsync( + CreateInstancePartitionRequest.newBuilder() + .setParent(InstanceName.of(projectId, instanceId).toString()) + .setInstancePartitionId(instancePartitionId) + .setInstancePartition(instancePartition) + .build()).get(); + System.out.printf("Instance partition %s was successfully created%n", createdInstancePartition.getName()); + } catch (ExecutionException e) { + System.out.printf( + "Error: Creating instance partition %s failed with error message %s%n", + instancePartition.getName(), e.getMessage()); + } catch (InterruptedException e) { + System.out.println("Error: Waiting for createInstancePartition operation to finish was interrupted"); + } + } +} +// [END spanner_create_instance_partition] diff --git a/samples/snippets/src/test/java/com/example/spanner/CreateInstancePartitionSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/CreateInstancePartitionSampleIT.java new file mode 100644 index 00000000000..9ddb8aab2fb --- /dev/null +++ b/samples/snippets/src/test/java/com/example/spanner/CreateInstancePartitionSampleIT.java @@ -0,0 +1,49 @@ +/* + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.spanner; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.cloud.spanner.InstanceAdminClient; +import com.google.cloud.spanner.InstanceConfigId; +import com.google.cloud.spanner.InstanceId; +import com.google.cloud.spanner.InstanceInfo; +import com.google.spanner.admin.instance.v1.InstancePartitionName; +import org.junit.Test; + +public class CreateInstancePartitionSampleIT extends SampleTestBaseV2 { + + @Test + public void testCreateInstancePartition() throws Exception { + String instanceId = idGenerator.generateInstanceId(); + InstanceAdminClient instanceAdminClient = spanner.getInstanceAdminClient(); + instanceAdminClient + .createInstance(InstanceInfo.newBuilder(InstanceId.of(projectId, instanceId)) + .setDisplayName("Geo-partitioning test instance") + .setInstanceConfigId(InstanceConfigId.of(projectId, "regional-us-central1")) + .setNodeCount(1).build()) + .get(); + + String instancePartitionId = "my-instance-partition"; + String out = + SampleRunner.runSample( + () -> CreateInstancePartitionSample.createInstancePartition(projectId, instanceId, instancePartitionId)); + assertThat(out) + .contains(String.format("Instance partition %s", + InstancePartitionName.of(projectId, instanceId, instancePartitionId).toString())); + } +} From 5d08d2b36e4e5396aa2f45bd23351620774c290d Mon Sep 17 00:00:00 2001 From: Varun Naik Date: Fri, 26 Jul 2024 21:31:00 -0700 Subject: [PATCH 2/3] Lint --- .../CreateInstancePartitionSample.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/samples/snippets/src/main/java/com/example/spanner/CreateInstancePartitionSample.java b/samples/snippets/src/main/java/com/example/spanner/CreateInstancePartitionSample.java index 0c07132aa7d..0e547bdaf7e 100644 --- a/samples/snippets/src/main/java/com/example/spanner/CreateInstancePartitionSample.java +++ b/samples/snippets/src/main/java/com/example/spanner/CreateInstancePartitionSample.java @@ -37,7 +37,8 @@ static void createInstancePartition() { createInstancePartition(projectId, instanceId, instancePartitionId); } - static void createInstancePartition(String projectId, String instanceId, String instancePartitionId) { + static void createInstancePartition( + String projectId, String instanceId, String instancePartitionId) { // Set instance partition configuration. int nodeCount = 1; String displayName = "Descriptive name"; @@ -51,26 +52,28 @@ static void createInstancePartition(String projectId, String instanceId, String .build(); try (Spanner spanner = - SpannerOptions.newBuilder() - .setProjectId(projectId) - .build() - .getService(); + SpannerOptions.newBuilder().setProjectId(projectId).build().getService(); InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) { // Wait for the createInstancePartition operation to finish. - InstancePartition createdInstancePartition = instanceAdminClient.createInstancePartitionAsync( - CreateInstancePartitionRequest.newBuilder() - .setParent(InstanceName.of(projectId, instanceId).toString()) - .setInstancePartitionId(instancePartitionId) - .setInstancePartition(instancePartition) - .build()).get(); - System.out.printf("Instance partition %s was successfully created%n", createdInstancePartition.getName()); + InstancePartition createdInstancePartition = + instanceAdminClient + .createInstancePartitionAsync( + CreateInstancePartitionRequest.newBuilder() + .setParent(InstanceName.of(projectId, instanceId).toString()) + .setInstancePartitionId(instancePartitionId) + .setInstancePartition(instancePartition) + .build()) + .get(); + System.out.printf( + "Instance partition %s was successfully created%n", createdInstancePartition.getName()); } catch (ExecutionException e) { System.out.printf( "Error: Creating instance partition %s failed with error message %s%n", instancePartition.getName(), e.getMessage()); } catch (InterruptedException e) { - System.out.println("Error: Waiting for createInstancePartition operation to finish was interrupted"); + System.out.println( + "Error: Waiting for createInstancePartition operation to finish was interrupted"); } } } From 6a0b4056f919ba3bd6970cea195a1d1ae307db2b Mon Sep 17 00:00:00 2001 From: Varun Naik Date: Fri, 2 Aug 2024 19:32:00 -0700 Subject: [PATCH 3/3] Lint --- .../CreateInstancePartitionSampleIT.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/samples/snippets/src/test/java/com/example/spanner/CreateInstancePartitionSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/CreateInstancePartitionSampleIT.java index 9ddb8aab2fb..3038d29750d 100644 --- a/samples/snippets/src/test/java/com/example/spanner/CreateInstancePartitionSampleIT.java +++ b/samples/snippets/src/test/java/com/example/spanner/CreateInstancePartitionSampleIT.java @@ -32,18 +32,24 @@ public void testCreateInstancePartition() throws Exception { String instanceId = idGenerator.generateInstanceId(); InstanceAdminClient instanceAdminClient = spanner.getInstanceAdminClient(); instanceAdminClient - .createInstance(InstanceInfo.newBuilder(InstanceId.of(projectId, instanceId)) - .setDisplayName("Geo-partitioning test instance") - .setInstanceConfigId(InstanceConfigId.of(projectId, "regional-us-central1")) - .setNodeCount(1).build()) + .createInstance( + InstanceInfo.newBuilder(InstanceId.of(projectId, instanceId)) + .setDisplayName("Geo-partitioning test instance") + .setInstanceConfigId(InstanceConfigId.of(projectId, "regional-us-central1")) + .setNodeCount(1) + .build()) .get(); String instancePartitionId = "my-instance-partition"; String out = SampleRunner.runSample( - () -> CreateInstancePartitionSample.createInstancePartition(projectId, instanceId, instancePartitionId)); + () -> + CreateInstancePartitionSample.createInstancePartition( + projectId, instanceId, instancePartitionId)); assertThat(out) - .contains(String.format("Instance partition %s", - InstancePartitionName.of(projectId, instanceId, instancePartitionId).toString())); + .contains( + String.format( + "Instance partition %s", + InstancePartitionName.of(projectId, instanceId, instancePartitionId).toString())); } }