From aac172680b559088669bba3bb5dd966671de9da8 Mon Sep 17 00:00:00 2001 From: elisheva-qlogic Date: Mon, 7 Jan 2019 10:43:40 -0500 Subject: [PATCH 1/5] instanceAdmin sample and tests --- .../examples/bigtable/InstanceAdmin.java | 196 ++++++++++++++++++ .../examples/bigtable/ITInstanceAdmin.java | 153 ++++++++++++++ 2 files changed, 349 insertions(+) create mode 100644 google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdmin.java create mode 100644 google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdmin.java diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdmin.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdmin.java new file mode 100644 index 000000000000..bf2e19cf3a50 --- /dev/null +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdmin.java @@ -0,0 +1,196 @@ +/* + * Copyright 2019 Google LLC. All Rights Reserved. + * + * 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 + * + * https://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.google.cloud.examples.bigtable; + +import com.google.api.gax.rpc.AlreadyExistsException; +import com.google.api.gax.rpc.NotFoundException; +import com.google.bigtable.admin.v2.ProjectName; +import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminClient; +import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminSettings; +import com.google.cloud.bigtable.admin.v2.models.Cluster; +import com.google.cloud.bigtable.admin.v2.models.CreateClusterRequest; +import com.google.cloud.bigtable.admin.v2.models.CreateInstanceRequest; +import com.google.cloud.bigtable.admin.v2.models.Instance; +import com.google.cloud.bigtable.admin.v2.models.Instance.Type; +import com.google.cloud.bigtable.admin.v2.models.PartialListInstancesException; +import com.google.cloud.bigtable.admin.v2.models.StorageType; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +public class InstanceAdmin { + + private static final String CLUSTER = "cluster" + System.currentTimeMillis(); + private final String clusterId; + private final String instanceId; + private final BigtableInstanceAdminClient adminClient; + + public static void main(String[] args) throws IOException { + + if (args.length != 1) { + System.out.println("Missing required project id"); + return; + } + String projectId = args[0]; + + InstanceAdmin instanceAdmin = new InstanceAdmin(projectId, "ssd-instance", "ssd-cluster"); + instanceAdmin.run(); + } + + public InstanceAdmin(String projectId, String instanceId, String clusterId) throws IOException { + this.instanceId = instanceId; + this.clusterId = clusterId; + + // [START connecting_to_bigtable] + // Create the settings to configure a bigtable instance admin client + BigtableInstanceAdminSettings instanceAdminSettings = + BigtableInstanceAdminSettings.newBuilder() + .setProjectName(ProjectName.of(projectId)) + .build(); + + // Create bigtable instance admin client + adminClient = BigtableInstanceAdminClient.create(instanceAdminSettings); + // [END connecting_to_bigtable] + } + + public void run() { + createProdInstance(); + listInstances(); + getInstance(); + listClusters(); + addCluster(); + deleteCluster(); + deleteInstance(); + adminClient.close(); + } + + public void createProdInstance() { + // Check if instance exists, create instance if does not exists + if (!adminClient.exists(instanceId)) { + System.out.println("Instance does not exist, creating a PRODUCTION instance"); + // [START bigtable_create_prod_instance] + // Creates a Production Instance with the ID "ssd-instance" + // cluster id "ssd-cluster", 3 nodes and location us-central1-f + CreateInstanceRequest createInstanceRequest = + CreateInstanceRequest.of(instanceId) + .addCluster(clusterId, "us-central1-f", 3, StorageType.SSD) + .setType(Type.PRODUCTION) + .addLabel("example", "instance_admin"); + // Creates production instance with given request + try { + Instance instance = adminClient.createInstance(createInstanceRequest); + System.out.printf("PRODUCTION type instance %s created successfully%n", instance.getId()); + } catch (AlreadyExistsException e) { + System.err.println("Failed to create instance, already exists: " + e.getMessage()); + System.exit(0); + } + // [END bigtable_create_prod_instance] + } + } + + public void listInstances() { + System.out.println("\nListing Instances"); + // [START bigtable_list_instances] + try { + List instances = adminClient.listInstances(); + for (Instance instance : instances) { + System.out.println(instance.getId()); + } + } catch (PartialListInstancesException e) { + System.out.println("Failed to list instances: " + e.getMessage()); + System.out.println("The following zones are unavailable: " + e.getUnavailableZones()); + System.out.println("But the following instances are reachable: " + e.getInstances()); + } + // [END bigtable_list_instances] + } + + public Instance getInstance() { + System.out.println("\nGet Instance"); + // [START bigtable_get_instance] + Instance instance = null; + try { + instance = adminClient.getInstance(instanceId); + System.out.println("Instance ID: " + instance.getId()); + System.out.println("Display Name: " + instance.getDisplayName()); + System.out.print("Labels: "); + Map labels = instance.getLabels(); + for (String key : labels.keySet()) { + System.out.printf("%s - %s", key, labels.get(key)); + } + System.out.println("\nState: " + instance.getState()); + System.out.println("Type: " + instance.getType()); + } catch (NotFoundException e) { + System.err.println("Failed to get non-existent instance: " + e.getMessage()); + } + // [END bigtable_get_instance] + return instance; + } + + public void listClusters() { + System.out.println("\nListing Clusters"); + // [START bigtable_get_clusters] + try { + List clusters = adminClient.listClusters(instanceId); + for (Cluster cluster : clusters) { + System.out.println(cluster.getId()); + } + } catch (NotFoundException e) { + System.err.println("Failed to list clusters from a non-existent instance: " + e.getMessage()); + } + // [END bigtable_get_clusters] + } + + public void deleteInstance() { + System.out.println("\nDeleting Instance"); + // [START bigtable_delete_instance] + try { + adminClient.deleteInstance(instanceId); + System.out.println("Instance deleted: " + instanceId); + } catch (NotFoundException e) { + System.err.println("Failed to delete non-existent instance: " + e.getMessage()); + } + // [END bigtable_delete_instance] + } + + public void addCluster() { + System.out.printf("%nAdding cluster %s to instance: %s%n", CLUSTER, instanceId); + // [START bigtable_create_cluster] + try { + adminClient.createCluster( + CreateClusterRequest.of(instanceId, CLUSTER) + .setZone("us-central1-c") + .setServeNodes(3) + .setStorageType(StorageType.SSD)); + System.out.printf("Cluster: %s created successfully%n", CLUSTER); + } catch (AlreadyExistsException e) { + System.err.println("Failed to add cluster, already exists: " + e.getMessage()); + } + // [END bigtable_create_cluster] + } + + public void deleteCluster() { + System.out.printf("%nDeleting cluster %s from instance: %s%n", CLUSTER, instanceId); + // [START bigtable_delete_cluster] + try { + adminClient.deleteCluster(instanceId, CLUSTER); + adminClient.listClusters(instanceId); + System.out.printf("Cluster: %s deleted successfully%n", CLUSTER); + } catch (NotFoundException e) { + System.err.println("Failed to delete a non-existent cluster: " + e.getMessage()); + } + // [END bigtable_delete_cluster] + } +} diff --git a/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdmin.java b/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdmin.java new file mode 100644 index 000000000000..24ee78b38b81 --- /dev/null +++ b/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdmin.java @@ -0,0 +1,153 @@ +/* + * Copyright 2019 Google LLC. All Rights Reserved. + * + * 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 + * + * https://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.google.cloud.examples.bigtable; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import com.google.api.gax.rpc.NotFoundException; +import com.google.bigtable.admin.v2.InstanceName; +import com.google.bigtable.admin.v2.ProjectName; +import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminClient; +import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminSettings; +import com.google.cloud.bigtable.admin.v2.models.Cluster; +import com.google.cloud.bigtable.admin.v2.models.CreateInstanceRequest; +import com.google.cloud.bigtable.admin.v2.models.Instance; +import com.google.cloud.bigtable.admin.v2.models.Instance.Type; +import com.google.cloud.bigtable.admin.v2.models.StorageType; +import java.io.IOException; +import java.util.Random; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.AssumptionViolatedException; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class ITInstanceAdmin { + + private static final String INSTANCE_PROPERTY_NAME = "bigtable.instance"; + private static final String INSTANCE_PREFIX = "instanceadmin"; + private static final String CLUSTER = "cluster" + System.currentTimeMillis(); + private static String clusterId; + private static String instanceId; + private static BigtableInstanceAdminClient adminClient; + private static InstanceAdmin instanceAdmin; + private static ProjectName projectName; + + @BeforeClass + public static void beforeClass() throws IOException { + String targetProject = System.getProperty(INSTANCE_PROPERTY_NAME); + if (targetProject == null) { + adminClient = null; + return; + } + projectName = ProjectName.of(InstanceName.parse(targetProject).getProject()); + BigtableInstanceAdminSettings instanceAdminSettings = + BigtableInstanceAdminSettings.newBuilder().setProjectName(projectName).build(); + adminClient = BigtableInstanceAdminClient.create(instanceAdminSettings); + } + + @AfterClass + public static void afterClass() { + garbageCollect(); + adminClient.close(); + } + + @Before + public void setup() throws IOException { + if (adminClient == null) { + throw new AssumptionViolatedException( + INSTANCE_PROPERTY_NAME + " property is not set, skipping integration tests."); + } + instanceId = generateId(); + clusterId = generateId(); + instanceAdmin = new InstanceAdmin(projectName.getProject(), instanceId, clusterId); + adminClient.createInstance( + CreateInstanceRequest.of(instanceId) + .addCluster(clusterId, "us-central1-f", 3, StorageType.SSD) + .setType(Type.PRODUCTION) + .addLabel("example", "instance_admin")); + } + + @After + public void after() { + if (adminClient.exists(instanceId)) { + adminClient.deleteInstance(instanceId); + } + } + + @Test + public void testCreateAndDeleteInstance() throws IOException { + // Create instance + String fakeInstance = generateId(); + String fakeCluster = generateId(); + InstanceAdmin testInstanceAdmin = + new InstanceAdmin(projectName.getProject(), fakeInstance, fakeCluster); + testInstanceAdmin.createProdInstance(); + assertTrue(adminClient.exists(fakeInstance)); + + // Delete instance + testInstanceAdmin.deleteInstance(); + assertTrue(!adminClient.exists(fakeInstance)); + } + + @Test + public void testGetInstance() { + // Get instance + Instance instance = instanceAdmin.getInstance(); + assertNotNull(instance); + } + + @Test(expected = NotFoundException.class) + public void testAddAndDeleteCluster() { + // Add cluster + instanceAdmin.addCluster(); + Cluster cluster = adminClient.getCluster(instanceId, CLUSTER); + assertNotNull(cluster); + + // Delete cluster + instanceAdmin.deleteCluster(); + adminClient.getCluster(instanceId, CLUSTER); + } + + // TODO: add test for instanceAdmin.listInstances() + // TODO: and test for instanceAdmin.listClusters() + + @Test + public void testRunDoesNotFail() { + instanceAdmin.run(); + } + + private static String generateId() { + return String.format("%s-%x", INSTANCE_PREFIX, new Random().nextInt()); + } + + private static void garbageCollect() { + Pattern timestampPattern = Pattern.compile(INSTANCE_PREFIX + "-([0-9a-f]+)"); + System.out.println(); + for (Instance instance : adminClient.listInstances()) { + Matcher matcher = timestampPattern.matcher(instance.getId()); + if (!matcher.matches()) { + continue; + } + System.out.println("Garbage collecting orphaned table: " + instance); + adminClient.deleteInstance(instance.getId()); + } + } +} From 3d87c2be2c57410e26d6104e10e3c752f766cc1b Mon Sep 17 00:00:00 2001 From: elisheva-qlogic Date: Mon, 7 Jan 2019 15:00:32 -0500 Subject: [PATCH 2/5] comments added --- .../examples/bigtable/InstanceAdmin.java | 39 ++++++++++++++++--- .../examples/bigtable/ITInstanceAdmin.java | 11 +++--- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdmin.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdmin.java index bf2e19cf3a50..5df3077bff7a 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdmin.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdmin.java @@ -31,6 +31,22 @@ import java.util.List; import java.util.Map; +/** + * An example of using Google Cloud Bigtable. + * + *

This example demonstrates the usage of BigtableInstanceAdminClient to create, configure, and + * delete Cloud Bigtable Instances and Clusters. + * + *

+ *   creates production instance
+ *   lists instances
+ *   gets instance
+ *   lists clusters
+ *   adds cluster
+ *   deletes cluster
+ *   deletes instance
+ * 
+ */ public class InstanceAdmin { private static final String CLUSTER = "cluster" + System.currentTimeMillis(); @@ -55,13 +71,13 @@ public InstanceAdmin(String projectId, String instanceId, String clusterId) thro this.clusterId = clusterId; // [START connecting_to_bigtable] - // Create the settings to configure a bigtable instance admin client + // Creates the settings to configure a bigtable instance admin client. BigtableInstanceAdminSettings instanceAdminSettings = BigtableInstanceAdminSettings.newBuilder() .setProjectName(ProjectName.of(projectId)) .build(); - // Create bigtable instance admin client + // Creates a bigtable instance admin client. adminClient = BigtableInstanceAdminClient.create(instanceAdminSettings); // [END connecting_to_bigtable] } @@ -77,19 +93,20 @@ public void run() { adminClient.close(); } + /** Demonstrates how to create a Production instance within a provided project. */ public void createProdInstance() { - // Check if instance exists, create instance if does not exists + // Checks if instance exists, creates instance if does not exists. if (!adminClient.exists(instanceId)) { System.out.println("Instance does not exist, creating a PRODUCTION instance"); // [START bigtable_create_prod_instance] - // Creates a Production Instance with the ID "ssd-instance" - // cluster id "ssd-cluster", 3 nodes and location us-central1-f + // Creates a Production Instance with the ID "ssd-instance", + // cluster id "ssd-cluster", 3 nodes and location "us-central1-f". CreateInstanceRequest createInstanceRequest = CreateInstanceRequest.of(instanceId) .addCluster(clusterId, "us-central1-f", 3, StorageType.SSD) .setType(Type.PRODUCTION) .addLabel("example", "instance_admin"); - // Creates production instance with given request + // Creates a production instance with the given request. try { Instance instance = adminClient.createInstance(createInstanceRequest); System.out.printf("PRODUCTION type instance %s created successfully%n", instance.getId()); @@ -101,6 +118,7 @@ public void createProdInstance() { } } + /** Demonstrates how to list all instances within a project. */ public void listInstances() { System.out.println("\nListing Instances"); // [START bigtable_list_instances] @@ -117,6 +135,11 @@ public void listInstances() { // [END bigtable_list_instances] } + /** + * Demonstrates how to get an instance. + * + * @return instance + */ public Instance getInstance() { System.out.println("\nGet Instance"); // [START bigtable_get_instance] @@ -139,6 +162,7 @@ public Instance getInstance() { return instance; } + /** Demonstrates how to list clusters within an instance. */ public void listClusters() { System.out.println("\nListing Clusters"); // [START bigtable_get_clusters] @@ -153,6 +177,7 @@ public void listClusters() { // [END bigtable_get_clusters] } + /** Demonstrates how to delete an instance. */ public void deleteInstance() { System.out.println("\nDeleting Instance"); // [START bigtable_delete_instance] @@ -165,6 +190,7 @@ public void deleteInstance() { // [END bigtable_delete_instance] } + /** Demonstrates how to add a cluster to an instance. */ public void addCluster() { System.out.printf("%nAdding cluster %s to instance: %s%n", CLUSTER, instanceId); // [START bigtable_create_cluster] @@ -181,6 +207,7 @@ public void addCluster() { // [END bigtable_create_cluster] } + /** Demonstrates how to delete a cluster from an instance. */ public void deleteCluster() { System.out.printf("%nDeleting cluster %s from instance: %s%n", CLUSTER, instanceId); // [START bigtable_delete_cluster] diff --git a/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdmin.java b/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdmin.java index 24ee78b38b81..52522fcf44f0 100644 --- a/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdmin.java +++ b/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdmin.java @@ -39,6 +39,7 @@ import org.junit.BeforeClass; import org.junit.Test; +/** Integration tests for {@link com.google.cloud.examples.bigtable.InstanceAdmin} */ public class ITInstanceAdmin { private static final String INSTANCE_PROPERTY_NAME = "bigtable.instance"; @@ -94,7 +95,7 @@ public void after() { @Test public void testCreateAndDeleteInstance() throws IOException { - // Create instance + // Creates an instance. String fakeInstance = generateId(); String fakeCluster = generateId(); InstanceAdmin testInstanceAdmin = @@ -102,26 +103,26 @@ public void testCreateAndDeleteInstance() throws IOException { testInstanceAdmin.createProdInstance(); assertTrue(adminClient.exists(fakeInstance)); - // Delete instance + // Deletes an instance. testInstanceAdmin.deleteInstance(); assertTrue(!adminClient.exists(fakeInstance)); } @Test public void testGetInstance() { - // Get instance + // Gets an instance. Instance instance = instanceAdmin.getInstance(); assertNotNull(instance); } @Test(expected = NotFoundException.class) public void testAddAndDeleteCluster() { - // Add cluster + // Adds a cluster. instanceAdmin.addCluster(); Cluster cluster = adminClient.getCluster(instanceId, CLUSTER); assertNotNull(cluster); - // Delete cluster + // Deletes a cluster. instanceAdmin.deleteCluster(); adminClient.getCluster(instanceId, CLUSTER); } From 0fd7ffd0c81ecefe3dc54a0a251af33fefef428e Mon Sep 17 00:00:00 2001 From: elisheva-qlogic Date: Tue, 8 Jan 2019 09:46:44 -0500 Subject: [PATCH 3/5] instanceAdminExample changes --- ...ceAdmin.java => InstanceAdminExample.java} | 50 ++++++++----------- ...Admin.java => ITInstanceAdminExample.java} | 25 +++++----- 2 files changed, 35 insertions(+), 40 deletions(-) rename google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/{InstanceAdmin.java => InstanceAdminExample.java} (86%) rename google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/{ITInstanceAdmin.java => ITInstanceAdminExample.java} (87%) diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdmin.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdminExample.java similarity index 86% rename from google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdmin.java rename to google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdminExample.java index 5df3077bff7a..909911ec5bcb 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdmin.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdminExample.java @@ -17,7 +17,6 @@ import com.google.api.gax.rpc.AlreadyExistsException; import com.google.api.gax.rpc.NotFoundException; -import com.google.bigtable.admin.v2.ProjectName; import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminClient; import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminSettings; import com.google.cloud.bigtable.admin.v2.models.Cluster; @@ -37,19 +36,19 @@ *

This example demonstrates the usage of BigtableInstanceAdminClient to create, configure, and * delete Cloud Bigtable Instances and Clusters. * - *

- *   creates production instance
- *   lists instances
- *   gets instance
- *   lists clusters
- *   adds cluster
- *   deletes cluster
- *   deletes instance
- * 
+ *
    + *
  • creates production instance + *
  • lists instances + *
  • gets instance + *
  • lists clusters + *
  • adds cluster + *
  • deletes cluster + *
  • deletes instance + *
*/ -public class InstanceAdmin { +public class InstanceAdminExample { - private static final String CLUSTER = "cluster" + System.currentTimeMillis(); + private static final String CLUSTER = "cluster"; private final String clusterId; private final String instanceId; private final BigtableInstanceAdminClient adminClient; @@ -62,20 +61,20 @@ public static void main(String[] args) throws IOException { } String projectId = args[0]; - InstanceAdmin instanceAdmin = new InstanceAdmin(projectId, "ssd-instance", "ssd-cluster"); + InstanceAdminExample instanceAdmin = + new InstanceAdminExample(projectId, "ssd-instance", "ssd-cluster"); instanceAdmin.run(); } - public InstanceAdmin(String projectId, String instanceId, String clusterId) throws IOException { + public InstanceAdminExample(String projectId, String instanceId, String clusterId) + throws IOException { this.instanceId = instanceId; this.clusterId = clusterId; // [START connecting_to_bigtable] // Creates the settings to configure a bigtable instance admin client. BigtableInstanceAdminSettings instanceAdminSettings = - BigtableInstanceAdminSettings.newBuilder() - .setProjectName(ProjectName.of(projectId)) - .build(); + BigtableInstanceAdminSettings.newBuilder().setProjectId(projectId).build(); // Creates a bigtable instance admin client. adminClient = BigtableInstanceAdminClient.create(instanceAdminSettings); @@ -110,9 +109,9 @@ public void createProdInstance() { try { Instance instance = adminClient.createInstance(createInstanceRequest); System.out.printf("PRODUCTION type instance %s created successfully%n", instance.getId()); - } catch (AlreadyExistsException e) { - System.err.println("Failed to create instance, already exists: " + e.getMessage()); - System.exit(0); + } catch (Exception e) { + System.err.println("Failed to create instance: " + e.getMessage()); + throw e; } // [END bigtable_create_prod_instance] } @@ -135,11 +134,7 @@ public void listInstances() { // [END bigtable_list_instances] } - /** - * Demonstrates how to get an instance. - * - * @return instance - */ + /** Demonstrates how to get an instance. */ public Instance getInstance() { System.out.println("\nGet Instance"); // [START bigtable_get_instance] @@ -192,7 +187,7 @@ public void deleteInstance() { /** Demonstrates how to add a cluster to an instance. */ public void addCluster() { - System.out.printf("%nAdding cluster %s to instance: %s%n", CLUSTER, instanceId); + System.out.printf("%nAdding cluster: %s to instance: %s%n", CLUSTER, instanceId); // [START bigtable_create_cluster] try { adminClient.createCluster( @@ -209,11 +204,10 @@ public void addCluster() { /** Demonstrates how to delete a cluster from an instance. */ public void deleteCluster() { - System.out.printf("%nDeleting cluster %s from instance: %s%n", CLUSTER, instanceId); + System.out.printf("%nDeleting cluster: %s from instance: %s%n", CLUSTER, instanceId); // [START bigtable_delete_cluster] try { adminClient.deleteCluster(instanceId, CLUSTER); - adminClient.listClusters(instanceId); System.out.printf("Cluster: %s deleted successfully%n", CLUSTER); } catch (NotFoundException e) { System.err.println("Failed to delete a non-existent cluster: " + e.getMessage()); diff --git a/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdmin.java b/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdminExample.java similarity index 87% rename from google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdmin.java rename to google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdminExample.java index 52522fcf44f0..8a989b4ec955 100644 --- a/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdmin.java +++ b/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdminExample.java @@ -15,6 +15,7 @@ */ package com.google.cloud.examples.bigtable; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -39,17 +40,17 @@ import org.junit.BeforeClass; import org.junit.Test; -/** Integration tests for {@link com.google.cloud.examples.bigtable.InstanceAdmin} */ -public class ITInstanceAdmin { +/** Integration tests for {@link InstanceAdminExample} */ +public class ITInstanceAdminExample { private static final String INSTANCE_PROPERTY_NAME = "bigtable.instance"; private static final String INSTANCE_PREFIX = "instanceadmin"; - private static final String CLUSTER = "cluster" + System.currentTimeMillis(); - private static String clusterId; - private static String instanceId; - private static BigtableInstanceAdminClient adminClient; - private static InstanceAdmin instanceAdmin; + private static final String CLUSTER = "cluster"; private static ProjectName projectName; + private static BigtableInstanceAdminClient adminClient; + private String clusterId; + private String instanceId; + private InstanceAdminExample instanceAdmin; @BeforeClass public static void beforeClass() throws IOException { @@ -60,7 +61,7 @@ public static void beforeClass() throws IOException { } projectName = ProjectName.of(InstanceName.parse(targetProject).getProject()); BigtableInstanceAdminSettings instanceAdminSettings = - BigtableInstanceAdminSettings.newBuilder().setProjectName(projectName).build(); + BigtableInstanceAdminSettings.newBuilder().setProjectId(projectName.getProject()).build(); adminClient = BigtableInstanceAdminClient.create(instanceAdminSettings); } @@ -78,7 +79,7 @@ public void setup() throws IOException { } instanceId = generateId(); clusterId = generateId(); - instanceAdmin = new InstanceAdmin(projectName.getProject(), instanceId, clusterId); + instanceAdmin = new InstanceAdminExample(projectName.getProject(), instanceId, clusterId); adminClient.createInstance( CreateInstanceRequest.of(instanceId) .addCluster(clusterId, "us-central1-f", 3, StorageType.SSD) @@ -98,14 +99,14 @@ public void testCreateAndDeleteInstance() throws IOException { // Creates an instance. String fakeInstance = generateId(); String fakeCluster = generateId(); - InstanceAdmin testInstanceAdmin = - new InstanceAdmin(projectName.getProject(), fakeInstance, fakeCluster); + InstanceAdminExample testInstanceAdmin = + new InstanceAdminExample(projectName.getProject(), fakeInstance, fakeCluster); testInstanceAdmin.createProdInstance(); assertTrue(adminClient.exists(fakeInstance)); // Deletes an instance. testInstanceAdmin.deleteInstance(); - assertTrue(!adminClient.exists(fakeInstance)); + assertFalse(adminClient.exists(fakeInstance)); } @Test From d9395ec7d5e827913094a42763fbc0590580148f Mon Sep 17 00:00:00 2001 From: elisheva-qlogic Date: Tue, 8 Jan 2019 13:37:28 -0500 Subject: [PATCH 4/5] renamed variables --- .../bigtable/ITInstanceAdminExample.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdminExample.java b/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdminExample.java index 8a989b4ec955..bb800f683838 100644 --- a/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdminExample.java +++ b/google-cloud-examples/src/test/java/com/google/cloud/examples/bigtable/ITInstanceAdminExample.java @@ -21,7 +21,6 @@ import com.google.api.gax.rpc.NotFoundException; import com.google.bigtable.admin.v2.InstanceName; -import com.google.bigtable.admin.v2.ProjectName; import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminClient; import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminSettings; import com.google.cloud.bigtable.admin.v2.models.Cluster; @@ -44,9 +43,9 @@ public class ITInstanceAdminExample { private static final String INSTANCE_PROPERTY_NAME = "bigtable.instance"; - private static final String INSTANCE_PREFIX = "instanceadmin"; + private static final String ID_PREFIX = "instanceadmin"; private static final String CLUSTER = "cluster"; - private static ProjectName projectName; + private static String projectName; private static BigtableInstanceAdminClient adminClient; private String clusterId; private String instanceId; @@ -59,9 +58,9 @@ public static void beforeClass() throws IOException { adminClient = null; return; } - projectName = ProjectName.of(InstanceName.parse(targetProject).getProject()); + projectName = InstanceName.parse(targetProject).getProject(); BigtableInstanceAdminSettings instanceAdminSettings = - BigtableInstanceAdminSettings.newBuilder().setProjectId(projectName.getProject()).build(); + BigtableInstanceAdminSettings.newBuilder().setProjectId(projectName).build(); adminClient = BigtableInstanceAdminClient.create(instanceAdminSettings); } @@ -79,7 +78,7 @@ public void setup() throws IOException { } instanceId = generateId(); clusterId = generateId(); - instanceAdmin = new InstanceAdminExample(projectName.getProject(), instanceId, clusterId); + instanceAdmin = new InstanceAdminExample(projectName, instanceId, clusterId); adminClient.createInstance( CreateInstanceRequest.of(instanceId) .addCluster(clusterId, "us-central1-f", 3, StorageType.SSD) @@ -97,16 +96,16 @@ public void after() { @Test public void testCreateAndDeleteInstance() throws IOException { // Creates an instance. - String fakeInstance = generateId(); - String fakeCluster = generateId(); + String testInstance = generateId(); + String testCluster = generateId(); InstanceAdminExample testInstanceAdmin = - new InstanceAdminExample(projectName.getProject(), fakeInstance, fakeCluster); + new InstanceAdminExample(projectName, testInstance, testCluster); testInstanceAdmin.createProdInstance(); - assertTrue(adminClient.exists(fakeInstance)); + assertTrue(adminClient.exists(testInstance)); // Deletes an instance. testInstanceAdmin.deleteInstance(); - assertFalse(adminClient.exists(fakeInstance)); + assertFalse(adminClient.exists(testInstance)); } @Test @@ -137,11 +136,11 @@ public void testRunDoesNotFail() { } private static String generateId() { - return String.format("%s-%x", INSTANCE_PREFIX, new Random().nextInt()); + return String.format("%s-%x", ID_PREFIX, new Random().nextInt()); } private static void garbageCollect() { - Pattern timestampPattern = Pattern.compile(INSTANCE_PREFIX + "-([0-9a-f]+)"); + Pattern timestampPattern = Pattern.compile(ID_PREFIX + "-([0-9a-f]+)"); System.out.println(); for (Instance instance : adminClient.listInstances()) { Matcher matcher = timestampPattern.matcher(instance.getId()); From c5ae2813235242cee84ea3e480aabde49fb04a36 Mon Sep 17 00:00:00 2001 From: elisheva-qlogic Date: Tue, 8 Jan 2019 14:33:59 -0500 Subject: [PATCH 5/5] changes --- .../cloud/examples/bigtable/InstanceAdminExample.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdminExample.java b/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdminExample.java index 909911ec5bcb..bfeb1bb42c7f 100644 --- a/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdminExample.java +++ b/google-cloud-examples/src/main/java/com/google/cloud/examples/bigtable/InstanceAdminExample.java @@ -23,7 +23,6 @@ import com.google.cloud.bigtable.admin.v2.models.CreateClusterRequest; import com.google.cloud.bigtable.admin.v2.models.CreateInstanceRequest; import com.google.cloud.bigtable.admin.v2.models.Instance; -import com.google.cloud.bigtable.admin.v2.models.Instance.Type; import com.google.cloud.bigtable.admin.v2.models.PartialListInstancesException; import com.google.cloud.bigtable.admin.v2.models.StorageType; import java.io.IOException; @@ -103,8 +102,8 @@ public void createProdInstance() { CreateInstanceRequest createInstanceRequest = CreateInstanceRequest.of(instanceId) .addCluster(clusterId, "us-central1-f", 3, StorageType.SSD) - .setType(Type.PRODUCTION) - .addLabel("example", "instance_admin"); + .setType(Instance.Type.PRODUCTION) + .addLabel("department", "accounting"); // Creates a production instance with the given request. try { Instance instance = adminClient.createInstance(createInstanceRequest); @@ -127,9 +126,9 @@ public void listInstances() { System.out.println(instance.getId()); } } catch (PartialListInstancesException e) { - System.out.println("Failed to list instances: " + e.getMessage()); - System.out.println("The following zones are unavailable: " + e.getUnavailableZones()); - System.out.println("But the following instances are reachable: " + e.getInstances()); + System.err.println("Failed to list instances: " + e.getMessage()); + System.err.println("The following zones are unavailable: " + e.getUnavailableZones()); + System.err.println("But the following instances are reachable: " + e.getInstances()); } // [END bigtable_list_instances] }