Skip to content

Commit 527541a

Browse files
committed
samples(bigtable): migrate admin snippets to modern V2 clients
1 parent 62bbaa1 commit 527541a

6 files changed

Lines changed: 229 additions & 118 deletions

File tree

java-bigtable/samples/snippets/src/main/java/com/example/bigtable/HelloWorld.java

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222

2323
import com.google.api.gax.rpc.NotFoundException;
2424
import com.google.api.gax.rpc.ServerStream;
25-
import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient;
26-
import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings;
25+
import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings;
26+
import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2;
2727
import com.google.cloud.bigtable.data.v2.BigtableDataClient;
2828
import com.google.cloud.bigtable.data.v2.BigtableDataSettings;
2929
import com.google.cloud.bigtable.data.v2.models.Filters.Filter;
@@ -63,7 +63,7 @@ public class HelloWorld {
6363
private final String instanceId;
6464
private final String tableId;
6565
private final BigtableDataClient dataClient;
66-
private final BigtableTableAdminClient adminClient;
66+
private final BigtableTableAdminClientV2 adminClient;
6767

6868
public static void main(String[] args) throws Exception {
6969

@@ -92,14 +92,11 @@ public HelloWorld(String projectId, String instanceId, String tableId) throws IO
9292
dataClient = BigtableDataClient.create(settings);
9393

9494
// Creates the settings to configure a bigtable table admin client.
95-
BigtableTableAdminSettings adminSettings =
96-
BigtableTableAdminSettings.newBuilder()
97-
.setProjectId(projectId)
98-
.setInstanceId(instanceId)
99-
.build();
95+
BaseBigtableTableAdminSettings adminSettings =
96+
BaseBigtableTableAdminSettings.newBuilder().build();
10097

10198
// Creates a bigtable table admin client.
102-
adminClient = BigtableTableAdminClient.create(adminSettings);
99+
adminClient = BigtableTableAdminClientV2.create(adminSettings);
103100
// [END bigtable_hw_connect]
104101
}
105102

@@ -123,7 +120,17 @@ public void close() {
123120
public void createTable() {
124121
// [START bigtable_hw_create_table]
125122
// Checks if table exists, creates table if does not exist.
126-
if (!adminClient.exists(tableId)) {
123+
boolean exists = false;
124+
try {
125+
adminClient.getTable(
126+
com.google.bigtable.admin.v2.GetTableRequest.newBuilder()
127+
.setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId)
128+
.build());
129+
exists = true;
130+
} catch (NotFoundException e) {
131+
// ignore
132+
}
133+
if (!exists) {
127134
System.out.println("Creating table: " + tableId);
128135
String parent = "projects/" + projectId + "/instances/" + instanceId;
129136
com.google.bigtable.admin.v2.CreateTableRequest request =
@@ -137,7 +144,7 @@ public void createTable() {
137144
com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance())
138145
.build())
139146
.build();
140-
adminClient.getBaseClient().createTable(request);
147+
adminClient.createTable(request);
141148
System.out.printf("Table %s created successfully%n", tableId);
142149
}
143150
// [END bigtable_hw_create_table]
@@ -270,7 +277,7 @@ public void deleteTable() {
270277
try {
271278
String tableName =
272279
"projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId;
273-
adminClient.getBaseClient().deleteTable(tableName);
280+
adminClient.deleteTable(tableName);
274281
System.out.printf("Table %s deleted successfully%n", tableId);
275282
} catch (NotFoundException e) {
276283
System.err.println("Failed to delete a non-existent table: " + e.getMessage());

java-bigtable/samples/snippets/src/main/java/com/example/bigtable/InstanceAdminExample.java

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
import com.google.bigtable.admin.v2.ListInstancesRequest;
3030
import com.google.bigtable.admin.v2.ListInstancesResponse;
3131
import com.google.bigtable.admin.v2.StorageType;
32-
import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminClient;
33-
import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminSettings;
32+
import com.google.cloud.bigtable.admin.v2.BaseBigtableInstanceAdminSettings;
33+
import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminClientV2;
3434
import java.io.IOException;
3535
import java.util.Map;
3636

@@ -56,7 +56,7 @@ public class InstanceAdminExample {
5656
private final String projectId;
5757
private final String clusterId;
5858
private final String instanceId;
59-
private final BigtableInstanceAdminClient adminClient;
59+
private final BigtableInstanceAdminClientV2 adminClient;
6060

6161
public static void main(String[] args) throws IOException {
6262

@@ -85,11 +85,11 @@ public InstanceAdminExample(String projectId, String instanceId, String clusterI
8585
this.clusterId = clusterId;
8686

8787
// Creates the settings to configure a bigtable instance admin client.
88-
BigtableInstanceAdminSettings instanceAdminSettings =
89-
BigtableInstanceAdminSettings.newBuilder().setProjectId(projectId).build();
88+
BaseBigtableInstanceAdminSettings instanceAdminSettings =
89+
BaseBigtableInstanceAdminSettings.newBuilder().build();
9090

9191
// Creates a bigtable instance admin client.
92-
adminClient = BigtableInstanceAdminClient.create(instanceAdminSettings);
92+
adminClient = BigtableInstanceAdminClientV2.create(instanceAdminSettings);
9393
}
9494

9595
public void run(boolean createWithTags) {
@@ -121,7 +121,17 @@ void close() {
121121
*/
122122
public void createProdInstance(boolean createWithTags) {
123123
// Checks if instance exists, creates instance if does not exists.
124-
if (!adminClient.exists(instanceId)) {
124+
boolean exists = false;
125+
try {
126+
adminClient.getInstance(
127+
com.google.bigtable.admin.v2.GetInstanceRequest.newBuilder()
128+
.setName("projects/" + projectId + "/instances/" + instanceId)
129+
.build());
130+
exists = true;
131+
} catch (com.google.api.gax.rpc.NotFoundException e) {
132+
// ignore
133+
}
134+
if (!exists) {
125135
System.out.println("Instance does not exist, creating a PRODUCTION instance");
126136
// [START bigtable_create_prod_instance]
127137
// Creates a Production Instance with the ID "ssd-instance",
@@ -157,7 +167,7 @@ public void createProdInstance(boolean createWithTags) {
157167
.build();
158168
// Creates a production instance with the given request.
159169
try {
160-
Instance instance = adminClient.getBaseClient().createInstanceAsync(request).get();
170+
Instance instance = adminClient.createInstanceAsync(request).get();
161171
System.out.printf("PRODUCTION type instance %s created successfully%n", instance.getName());
162172
} catch (Exception e) {
163173
System.err.println("Failed to create instance: " + e.getMessage());
@@ -174,7 +184,7 @@ public void listInstances() {
174184
try {
175185
String parent = "projects/" + projectId;
176186
ListInstancesRequest request = ListInstancesRequest.newBuilder().setParent(parent).build();
177-
ListInstancesResponse response = adminClient.getBaseClient().listInstances(request);
187+
ListInstancesResponse response = adminClient.listInstances(request);
178188
for (Instance instance : response.getInstancesList()) {
179189
System.out.println(instance.getName());
180190
}
@@ -192,7 +202,7 @@ public Instance getInstance() {
192202
try {
193203
String name = "projects/" + projectId + "/instances/" + instanceId;
194204
GetInstanceRequest request = GetInstanceRequest.newBuilder().setName(name).build();
195-
instance = adminClient.getBaseClient().getInstance(request);
205+
instance = adminClient.getInstance(request);
196206
System.out.println("Instance ID: " + instance.getName());
197207
System.out.println("Display Name: " + instance.getDisplayName());
198208
System.out.print("Labels: ");
@@ -216,7 +226,7 @@ public void listClusters() {
216226
try {
217227
String parent = "projects/" + projectId + "/instances/" + instanceId;
218228
ListClustersRequest request = ListClustersRequest.newBuilder().setParent(parent).build();
219-
ListClustersResponse response = adminClient.getBaseClient().listClusters(request);
229+
ListClustersResponse response = adminClient.listClusters(request);
220230
for (Cluster cluster : response.getClustersList()) {
221231
System.out.println(cluster.getName());
222232
}
@@ -233,7 +243,7 @@ public void deleteInstance() {
233243
try {
234244
String name = "projects/" + projectId + "/instances/" + instanceId;
235245
DeleteInstanceRequest request = DeleteInstanceRequest.newBuilder().setName(name).build();
236-
adminClient.getBaseClient().deleteInstance(request);
246+
adminClient.deleteInstance(request);
237247
System.out.println("Instance deleted: " + instanceId);
238248
} catch (NotFoundException e) {
239249
System.err.println("Failed to delete non-existent instance: " + e.getMessage());
@@ -259,7 +269,7 @@ public void addCluster() {
259269
.setClusterId(CLUSTER)
260270
.setCluster(clusterObj)
261271
.build();
262-
adminClient.getBaseClient().createClusterAsync(request).get();
272+
adminClient.createClusterAsync(request).get();
263273
System.out.printf("Cluster: %s created successfully%n", CLUSTER);
264274
} catch (Exception e) {
265275
System.err.println("Failed to add cluster: " + e.getMessage());
@@ -274,7 +284,7 @@ public void deleteCluster() {
274284
try {
275285
String name = "projects/" + projectId + "/instances/" + instanceId + "/clusters/" + CLUSTER;
276286
DeleteClusterRequest request = DeleteClusterRequest.newBuilder().setName(name).build();
277-
adminClient.getBaseClient().deleteCluster(request);
287+
adminClient.deleteCluster(request);
278288
System.out.printf("Cluster: %s deleted successfully%n", CLUSTER);
279289
} catch (NotFoundException e) {
280290
System.err.println("Failed to delete a non-existent cluster: " + e.getMessage());

java-bigtable/samples/snippets/src/main/java/com/example/bigtable/TableAdminExample.java

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
import com.google.bigtable.admin.v2.ListTablesRequest;
2525
import com.google.bigtable.admin.v2.ModifyColumnFamiliesRequest;
2626
import com.google.bigtable.admin.v2.Table;
27-
import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient;
28-
import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings;
27+
import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings;
28+
import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2;
2929
import com.google.cloud.bigtable.admin.v2.models.GcRuleBuilder;
3030
import java.io.IOException;
3131
import java.time.Duration;
@@ -62,7 +62,7 @@ public class TableAdminExample {
6262
private final String projectId;
6363
private final String instanceId;
6464
private final String tableId;
65-
private final BigtableTableAdminClient adminClient;
65+
private final BigtableTableAdminClientV2 adminClient;
6666

6767
public static void main(String[] args) throws IOException {
6868

@@ -83,14 +83,11 @@ public TableAdminExample(String projectId, String instanceId, String tableId) th
8383
this.tableId = tableId;
8484

8585
// Creates the settings to configure a bigtable table admin client.
86-
BigtableTableAdminSettings adminSettings =
87-
BigtableTableAdminSettings.newBuilder()
88-
.setProjectId(projectId)
89-
.setInstanceId(instanceId)
90-
.build();
86+
BaseBigtableTableAdminSettings adminSettings =
87+
BaseBigtableTableAdminSettings.newBuilder().build();
9188

9289
// Creates a bigtable table admin client.
93-
adminClient = BigtableTableAdminClient.create(adminSettings);
90+
adminClient = BigtableTableAdminClientV2.create(adminSettings);
9491
}
9592

9693
public void run() {
@@ -119,7 +116,17 @@ void close() {
119116
public void createTable() {
120117
// [START bigtable_create_table]
121118
// Checks if table exists, creates table if does not exist.
122-
if (!adminClient.exists(tableId)) {
119+
boolean exists = false;
120+
try {
121+
adminClient.getTable(
122+
com.google.bigtable.admin.v2.GetTableRequest.newBuilder()
123+
.setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId)
124+
.build());
125+
exists = true;
126+
} catch (NotFoundException e) {
127+
// ignore
128+
}
129+
if (!exists) {
123130
System.out.println("Table does not exist, creating table: " + tableId);
124131
String parent = "projects/" + projectId + "/instances/" + instanceId;
125132
CreateTableRequest createTableRequest =
@@ -131,7 +138,7 @@ public void createTable() {
131138
.putColumnFamilies("cf", ColumnFamily.getDefaultInstance())
132139
.build())
133140
.build();
134-
Table table = adminClient.getBaseClient().createTable(createTableRequest);
141+
Table table = adminClient.createTable(createTableRequest);
135142
System.out.printf("Table: %s created successfully%n", table.getName());
136143
}
137144
// [END bigtable_create_table]
@@ -145,7 +152,7 @@ public void listAllTables() {
145152
try {
146153
String parent = "projects/" + projectId + "/instances/" + instanceId;
147154
ListTablesRequest request = ListTablesRequest.newBuilder().setParent(parent).build();
148-
for (Table table : adminClient.getBaseClient().listTables(request).iterateAll()) {
155+
for (Table table : adminClient.listTables(request).iterateAll()) {
149156
System.out.println(table.getName());
150157
}
151158
} catch (NotFoundException e) {
@@ -162,7 +169,7 @@ public void getTableMeta() {
162169
try {
163170
String tableName =
164171
"projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId;
165-
Table table = adminClient.getBaseClient().getTable(tableName);
172+
Table table = adminClient.getTable(tableName);
166173
System.out.println("Table: " + table.getName());
167174
for (java.util.Map.Entry<String, ColumnFamily> entry :
168175
table.getColumnFamiliesMap().entrySet()) {
@@ -198,7 +205,7 @@ public void addFamilyWithMaxAgeRule() {
198205
.setId(COLUMN_FAMILY_1)
199206
.setCreate(ColumnFamily.newBuilder().setGcRule(maxAgeRule)))
200207
.build();
201-
adminClient.getBaseClient().modifyColumnFamilies(request);
208+
adminClient.modifyColumnFamilies(request);
202209
System.out.println("Created column family: " + COLUMN_FAMILY_1);
203210
} catch (AlreadyExistsException e) {
204211
System.err.println(
@@ -229,7 +236,7 @@ public void addFamilyWithMaxVersionsRule() {
229236
.setId(COLUMN_FAMILY_2)
230237
.setCreate(ColumnFamily.newBuilder().setGcRule(versionRule)))
231238
.build();
232-
adminClient.getBaseClient().modifyColumnFamilies(request);
239+
adminClient.modifyColumnFamilies(request);
233240
System.out.println("Created column family: " + COLUMN_FAMILY_2);
234241
} catch (AlreadyExistsException e) {
235242
System.err.println(
@@ -264,7 +271,7 @@ public void addFamilyWithUnionRule() {
264271
.setId(COLUMN_FAMILY_3)
265272
.setCreate(ColumnFamily.newBuilder().setGcRule(unionRule)))
266273
.build();
267-
adminClient.getBaseClient().modifyColumnFamilies(request);
274+
adminClient.modifyColumnFamilies(request);
268275
System.out.println("Created column family: " + COLUMN_FAMILY_3);
269276
} catch (AlreadyExistsException e) {
270277
System.err.println(
@@ -298,7 +305,7 @@ public void addFamilyWithIntersectionRule() {
298305
.setId(COLUMN_FAMILY_4)
299306
.setCreate(ColumnFamily.newBuilder().setGcRule(intersectionRule)))
300307
.build();
301-
adminClient.getBaseClient().modifyColumnFamilies(request);
308+
adminClient.modifyColumnFamilies(request);
302309
System.out.println("Created column family: " + COLUMN_FAMILY_4);
303310
} catch (AlreadyExistsException e) {
304311
System.err.println(
@@ -335,7 +342,7 @@ public void addFamilyWithNestedRule() {
335342
.setId(COLUMN_FAMILY_5)
336343
.setCreate(ColumnFamily.newBuilder().setGcRule(unionRule)))
337344
.build();
338-
adminClient.getBaseClient().modifyColumnFamilies(request);
345+
adminClient.modifyColumnFamilies(request);
339346
System.out.println("Created column family: " + COLUMN_FAMILY_5);
340347
} catch (AlreadyExistsException e) {
341348
System.err.println(
@@ -352,7 +359,7 @@ public void listColumnFamilies() {
352359
try {
353360
String tableName =
354361
"projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId;
355-
Table table = adminClient.getBaseClient().getTable(tableName);
362+
Table table = adminClient.getTable(tableName);
356363
for (java.util.Map.Entry<String, ColumnFamily> entry :
357364
table.getColumnFamiliesMap().entrySet()) {
358365
System.out.printf(
@@ -383,7 +390,7 @@ public void modifyColumnFamilyRule() {
383390
.setId(COLUMN_FAMILY_1)
384391
.setUpdate(ColumnFamily.newBuilder().setGcRule(versionRule)))
385392
.build();
386-
adminClient.getBaseClient().modifyColumnFamilies(request);
393+
adminClient.modifyColumnFamilies(request);
387394
System.out.printf("Column family %s GC rule updated%n", COLUMN_FAMILY_1);
388395
} catch (NotFoundException e) {
389396
System.err.println("Failed to modify a non-existent column family: " + e.getMessage());
@@ -398,7 +405,7 @@ public void printModifiedColumnFamily() {
398405
try {
399406
String tableName =
400407
"projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId;
401-
Table table = adminClient.getBaseClient().getTable(tableName);
408+
Table table = adminClient.getTable(tableName);
402409
if (table.containsColumnFamilies(COLUMN_FAMILY_1)) {
403410
System.out.printf(
404411
"Column family: %s%nGC Rule: %s%n",
@@ -426,7 +433,7 @@ public void deleteColumnFamily() {
426433
.setId(COLUMN_FAMILY_2)
427434
.setDrop(true))
428435
.build();
429-
adminClient.getBaseClient().modifyColumnFamilies(request);
436+
adminClient.modifyColumnFamilies(request);
430437
System.out.printf("Column family %s deleted successfully%n", COLUMN_FAMILY_2);
431438
} catch (NotFoundException e) {
432439
System.err.println("Failed to delete a non-existent column family: " + e.getMessage());
@@ -442,7 +449,7 @@ public void deleteTable() {
442449
try {
443450
String tableName =
444451
"projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId;
445-
adminClient.getBaseClient().deleteTable(tableName);
452+
adminClient.deleteTable(tableName);
446453
System.out.printf("Table: %s deleted successfully%n", tableId);
447454
} catch (NotFoundException e) {
448455
System.err.println("Failed to delete a non-existent table: " + e.getMessage());

0 commit comments

Comments
 (0)