Skip to content
This repository was archived by the owner on May 8, 2026. It is now read-only.

Commit 9e28346

Browse files
committed
refactor(samples): migrate Admin API samples to BigtableAdminClientV2
This commit modernizes the Bigtable Admin API samples to use the V2 Selective GAPIC clients (`BigtableTableAdminClientV2` and `BigtableInstanceAdminClientV2`).
1 parent db5899b commit 9e28346

7 files changed

Lines changed: 218 additions & 115 deletions

File tree

samples/snippets/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
<dependency>
4343
<groupId>com.google.cloud</groupId>
4444
<artifactId>google-cloud-bigtable</artifactId>
45+
<version>2.77.2-SNAPSHOT</version>
4546
</dependency>
4647
<!-- [END bigtable_install_with_bom] -->
4748

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

Lines changed: 18 additions & 11 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,12 @@ 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)
95+
BaseBigtableTableAdminSettings adminSettings =
96+
BaseBigtableTableAdminSettings.newBuilder()
9997
.build();
10098

10199
// Creates a bigtable table admin client.
102-
adminClient = BigtableTableAdminClient.create(adminSettings);
100+
adminClient = BigtableTableAdminClientV2.create(adminSettings);
103101
// [END bigtable_hw_connect]
104102
}
105103

@@ -123,7 +121,16 @@ public void close() {
123121
public void createTable() {
124122
// [START bigtable_hw_create_table]
125123
// Checks if table exists, creates table if does not exist.
126-
if (!adminClient.exists(tableId)) {
124+
boolean exists = false;
125+
try {
126+
adminClient.getTable(
127+
com.google.bigtable.admin.v2.GetTableRequest.newBuilder()
128+
.setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId)
129+
.build());
130+
exists = true;
131+
} catch (NotFoundException e) {
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());

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

Lines changed: 23 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

@@ -78,11 +78,11 @@ public InstanceAdminExample(String projectId, String instanceId, String clusterI
7878
this.clusterId = clusterId;
7979

8080
// Creates the settings to configure a bigtable instance admin client.
81-
BigtableInstanceAdminSettings instanceAdminSettings =
82-
BigtableInstanceAdminSettings.newBuilder().setProjectId(projectId).build();
81+
BaseBigtableInstanceAdminSettings instanceAdminSettings =
82+
BaseBigtableInstanceAdminSettings.newBuilder().build();
8383

8484
// Creates a bigtable instance admin client.
85-
adminClient = BigtableInstanceAdminClient.create(instanceAdminSettings);
85+
adminClient = BigtableInstanceAdminClientV2.create(instanceAdminSettings);
8686
}
8787

8888
public void run() {
@@ -104,7 +104,16 @@ void close() {
104104
/** Demonstrates how to create a Production instance within a provided project. */
105105
public void createProdInstance() {
106106
// Checks if instance exists, creates instance if does not exists.
107-
if (!adminClient.exists(instanceId)) {
107+
boolean exists = false;
108+
try {
109+
adminClient.getInstance(
110+
com.google.bigtable.admin.v2.GetInstanceRequest.newBuilder()
111+
.setName("projects/" + projectId + "/instances/" + instanceId)
112+
.build());
113+
exists = true;
114+
} catch (com.google.api.gax.rpc.NotFoundException e) {
115+
}
116+
if (!exists) {
108117
System.out.println("Instance does not exist, creating a PRODUCTION instance");
109118
// [START bigtable_create_prod_instance]
110119
// Creates a Production Instance with the ID "ssd-instance",
@@ -131,7 +140,7 @@ public void createProdInstance() {
131140
.build();
132141
// Creates a production instance with the given request.
133142
try {
134-
Instance instance = adminClient.getBaseClient().createInstanceAsync(request).get();
143+
Instance instance = adminClient.createInstanceAsync(request).get();
135144
System.out.printf("PRODUCTION type instance %s created successfully%n", instance.getName());
136145
} catch (Exception e) {
137146
System.err.println("Failed to create instance: " + e.getMessage());
@@ -148,7 +157,7 @@ public void listInstances() {
148157
try {
149158
String parent = "projects/" + projectId;
150159
ListInstancesRequest request = ListInstancesRequest.newBuilder().setParent(parent).build();
151-
ListInstancesResponse response = adminClient.getBaseClient().listInstances(request);
160+
ListInstancesResponse response = adminClient.listInstances(request);
152161
for (Instance instance : response.getInstancesList()) {
153162
System.out.println(instance.getName());
154163
}
@@ -166,7 +175,7 @@ public Instance getInstance() {
166175
try {
167176
String name = "projects/" + projectId + "/instances/" + instanceId;
168177
GetInstanceRequest request = GetInstanceRequest.newBuilder().setName(name).build();
169-
instance = adminClient.getBaseClient().getInstance(request);
178+
instance = adminClient.getInstance(request);
170179
System.out.println("Instance ID: " + instance.getName());
171180
System.out.println("Display Name: " + instance.getDisplayName());
172181
System.out.print("Labels: ");
@@ -190,7 +199,7 @@ public void listClusters() {
190199
try {
191200
String parent = "projects/" + projectId + "/instances/" + instanceId;
192201
ListClustersRequest request = ListClustersRequest.newBuilder().setParent(parent).build();
193-
ListClustersResponse response = adminClient.getBaseClient().listClusters(request);
202+
ListClustersResponse response = adminClient.listClusters(request);
194203
for (Cluster cluster : response.getClustersList()) {
195204
System.out.println(cluster.getName());
196205
}
@@ -207,7 +216,7 @@ public void deleteInstance() {
207216
try {
208217
String name = "projects/" + projectId + "/instances/" + instanceId;
209218
DeleteInstanceRequest request = DeleteInstanceRequest.newBuilder().setName(name).build();
210-
adminClient.getBaseClient().deleteInstance(request);
219+
adminClient.deleteInstance(request);
211220
System.out.println("Instance deleted: " + instanceId);
212221
} catch (NotFoundException e) {
213222
System.err.println("Failed to delete non-existent instance: " + e.getMessage());
@@ -233,7 +242,7 @@ public void addCluster() {
233242
.setClusterId(CLUSTER)
234243
.setCluster(clusterObj)
235244
.build();
236-
adminClient.getBaseClient().createClusterAsync(request).get();
245+
adminClient.createClusterAsync(request).get();
237246
System.out.printf("Cluster: %s created successfully%n", CLUSTER);
238247
} catch (Exception e) {
239248
System.err.println("Failed to add cluster: " + e.getMessage());
@@ -248,7 +257,7 @@ public void deleteCluster() {
248257
try {
249258
String name = "projects/" + projectId + "/instances/" + instanceId + "/clusters/" + CLUSTER;
250259
DeleteClusterRequest request = DeleteClusterRequest.newBuilder().setName(name).build();
251-
adminClient.getBaseClient().deleteCluster(request);
260+
adminClient.deleteCluster(request);
252261
System.out.printf("Cluster: %s deleted successfully%n", CLUSTER);
253262
} catch (NotFoundException e) {
254263
System.err.println("Failed to delete a non-existent cluster: " + e.getMessage());

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

Lines changed: 29 additions & 22 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,12 @@ 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)
86+
BaseBigtableTableAdminSettings adminSettings =
87+
BaseBigtableTableAdminSettings.newBuilder()
9088
.build();
9189

9290
// Creates a bigtable table admin client.
93-
adminClient = BigtableTableAdminClient.create(adminSettings);
91+
adminClient = BigtableTableAdminClientV2.create(adminSettings);
9492
}
9593

9694
public void run() {
@@ -119,7 +117,16 @@ void close() {
119117
public void createTable() {
120118
// [START bigtable_create_table]
121119
// Checks if table exists, creates table if does not exist.
122-
if (!adminClient.exists(tableId)) {
120+
boolean exists = false;
121+
try {
122+
adminClient.getTable(
123+
com.google.bigtable.admin.v2.GetTableRequest.newBuilder()
124+
.setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId)
125+
.build());
126+
exists = true;
127+
} catch (com.google.api.gax.rpc.NotFoundException e) {
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)