Skip to content

Commit 678aae4

Browse files
committed
samples(bigtable): migrate secondary admin samples to V2 clients
1 parent 527541a commit 678aae4

10 files changed

Lines changed: 597 additions & 214 deletions

File tree

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

Lines changed: 144 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,8 @@
2121
import com.google.api.gax.rpc.NotFoundException;
2222
import com.google.api.gax.rpc.PermissionDeniedException;
2323
import com.google.api.gax.rpc.ServerStream;
24-
import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient;
25-
import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings;
26-
import com.google.cloud.bigtable.admin.v2.models.AuthorizedView;
27-
import com.google.cloud.bigtable.admin.v2.models.CreateAuthorizedViewRequest;
28-
import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest;
29-
import com.google.cloud.bigtable.admin.v2.models.FamilySubsets;
30-
import com.google.cloud.bigtable.admin.v2.models.SubsetView;
31-
import com.google.cloud.bigtable.admin.v2.models.Table;
32-
import com.google.cloud.bigtable.admin.v2.models.UpdateAuthorizedViewRequest;
24+
import com.google.cloud.bigtable.admin.v2.BaseBigtableTableAdminSettings;
25+
import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClientV2;
3326
import com.google.cloud.bigtable.data.v2.BigtableDataClient;
3427
import com.google.cloud.bigtable.data.v2.BigtableDataSettings;
3528
import com.google.cloud.bigtable.data.v2.models.AuthorizedViewId;
@@ -50,9 +43,11 @@ public class AuthorizedViewExample {
5043
private static final String COLUMN_QUALIFIER_GREETING = "greeting";
5144
private static final String COLUMN_QUALIFIER_NAME = "name";
5245
private static final String ROW_KEY_PREFIX = "rowKey";
46+
private final String projectId;
47+
private final String instanceId;
5348
private final String tableId;
5449
private final String authorizedViewId;
55-
private final BigtableTableAdminClient adminClient;
50+
private final BigtableTableAdminClientV2 adminClient;
5651
private final BigtableDataClient dataClient;
5752

5853
public static void main(String[] args) throws IOException {
@@ -72,6 +67,8 @@ public static void main(String[] args) throws IOException {
7267
public AuthorizedViewExample(
7368
String projectId, String instanceId, String tableId, String authorizedViewId)
7469
throws IOException {
70+
this.projectId = projectId;
71+
this.instanceId = instanceId;
7572
this.tableId = tableId;
7673
this.authorizedViewId = authorizedViewId;
7774

@@ -83,14 +80,23 @@ public AuthorizedViewExample(
8380
dataClient = BigtableDataClient.create(settings);
8481

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

9286
// Creates a bigtable table admin client.
93-
adminClient = BigtableTableAdminClient.create(adminSettings);
87+
adminClient = BigtableTableAdminClientV2.create(adminSettings);
88+
}
89+
90+
private boolean exists(String tableId) {
91+
try {
92+
adminClient.getTable(
93+
com.google.bigtable.admin.v2.GetTableRequest.newBuilder()
94+
.setName("projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId)
95+
.build());
96+
return true;
97+
} catch (com.google.api.gax.rpc.NotFoundException e) {
98+
return false;
99+
}
94100
}
95101

96102
public void close() {
@@ -114,20 +120,30 @@ public void run() {
114120

115121
public void createTable() {
116122
// Checks if table exists, creates table if it does not exist.
117-
if (!adminClient.exists(tableId)) {
123+
if (!exists(tableId)) {
118124
System.out.println("Table does not exist, creating table: " + tableId);
119-
CreateTableRequest createTableRequest =
120-
CreateTableRequest.of(tableId).addFamily(COLUMN_FAMILY);
121-
Table table = adminClient.createTable(createTableRequest);
122-
System.out.printf("Table: %s created successfully%n", table.getId());
125+
com.google.bigtable.admin.v2.CreateTableRequest request =
126+
com.google.bigtable.admin.v2.CreateTableRequest.newBuilder()
127+
.setParent("projects/" + projectId + "/instances/" + instanceId)
128+
.setTableId(tableId)
129+
.setTable(
130+
com.google.bigtable.admin.v2.Table.newBuilder()
131+
.putColumnFamilies(
132+
COLUMN_FAMILY,
133+
com.google.bigtable.admin.v2.ColumnFamily.getDefaultInstance())
134+
.build())
135+
.build();
136+
com.google.bigtable.admin.v2.Table table = adminClient.createTable(request);
137+
System.out.printf("Table: %s created successfully%n", table.getName());
123138
}
124139
}
125140

126141
public void deleteTable() {
127142
// Deletes the entire table.
128143
System.out.println("\nDelete table: " + tableId);
129144
try {
130-
adminClient.deleteTable(tableId);
145+
adminClient.deleteTable(
146+
"projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId);
131147
System.out.printf("Table: %s deleted successfully%n", tableId);
132148
} catch (NotFoundException e) {
133149
System.err.println("Failed to delete a non-existent table: " + e.getMessage());
@@ -140,24 +156,45 @@ public void deleteTable() {
140156
public void createAuthorizedView() {
141157
// Checks if the authorized view exists, creates it if it does not exist.
142158
try {
143-
adminClient.getAuthorizedView(tableId, authorizedViewId);
159+
adminClient.getAuthorizedView(
160+
"projects/"
161+
+ projectId
162+
+ "/instances/"
163+
+ instanceId
164+
+ "/tables/"
165+
+ tableId
166+
+ "/authorizedViews/"
167+
+ authorizedViewId);
144168
} catch (NotFoundException exception) {
145169
System.out.printf("%nCreating authorized view %s in table %s%n", authorizedViewId, tableId);
146170
// [START bigtable_create_authorized_view]
147171
try {
148-
CreateAuthorizedViewRequest request =
149-
CreateAuthorizedViewRequest.of(tableId, authorizedViewId)
150-
.setAuthorizedViewType(
151-
SubsetView.create()
152-
.addRowPrefix("")
153-
.setFamilySubsets(
154-
COLUMN_FAMILY,
155-
FamilySubsets.create().addQualifierPrefix(COLUMN_QUALIFIER_NAME)));
156-
AuthorizedView authorizedView = adminClient.createAuthorizedView(request);
157-
System.out.printf("AuthorizedView: %s created successfully%n", authorizedView.getId());
158-
} catch (NotFoundException e) {
159-
System.err.println(
160-
"Failed to create an authorized view from a non-existent table: " + e.getMessage());
172+
com.google.bigtable.admin.v2.AuthorizedView.SubsetView subsetView =
173+
com.google.bigtable.admin.v2.AuthorizedView.SubsetView.newBuilder()
174+
.addRowPrefixes(com.google.protobuf.ByteString.EMPTY)
175+
.putFamilySubsets(
176+
COLUMN_FAMILY,
177+
com.google.bigtable.admin.v2.AuthorizedView.FamilySubsets.newBuilder()
178+
.addQualifierPrefixes(
179+
com.google.protobuf.ByteString.copyFromUtf8(COLUMN_QUALIFIER_NAME))
180+
.build())
181+
.build();
182+
com.google.bigtable.admin.v2.AuthorizedView authorizedViewObj =
183+
com.google.bigtable.admin.v2.AuthorizedView.newBuilder()
184+
.setSubsetView(subsetView)
185+
.build();
186+
com.google.bigtable.admin.v2.CreateAuthorizedViewRequest request =
187+
com.google.bigtable.admin.v2.CreateAuthorizedViewRequest.newBuilder()
188+
.setParent(
189+
"projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId)
190+
.setAuthorizedViewId(authorizedViewId)
191+
.setAuthorizedView(authorizedViewObj)
192+
.build();
193+
com.google.bigtable.admin.v2.AuthorizedView authorizedView =
194+
adminClient.createAuthorizedViewAsync(request).get();
195+
System.out.printf("AuthorizedView: %s created successfully%n", authorizedView.getName());
196+
} catch (Exception e) {
197+
System.err.println("Failed to create an authorized view: " + e.getMessage());
161198
}
162199
// [END bigtable_create_authorized_view]
163200
}
@@ -169,40 +206,73 @@ public void updateAuthorizedView() {
169206
// [START bigtable_update_authorized_view]
170207
try {
171208
// Update to an authorized view permitting everything.
172-
UpdateAuthorizedViewRequest request =
173-
UpdateAuthorizedViewRequest.of(tableId, authorizedViewId)
174-
.setAuthorizedViewType(
175-
SubsetView.create()
176-
.addRowPrefix("")
177-
.setFamilySubsets(
178-
COLUMN_FAMILY, FamilySubsets.create().addQualifierPrefix("")));
179-
AuthorizedView authorizedView = adminClient.updateAuthorizedView(request);
180-
System.out.printf("AuthorizedView: %s updated successfully%n", authorizedView.getId());
181-
} catch (NotFoundException e) {
182-
System.err.println("Failed to modify a non-existent authorized view: " + e.getMessage());
209+
com.google.bigtable.admin.v2.AuthorizedView.SubsetView subsetView =
210+
com.google.bigtable.admin.v2.AuthorizedView.SubsetView.newBuilder()
211+
.addRowPrefixes(com.google.protobuf.ByteString.EMPTY)
212+
.putFamilySubsets(
213+
COLUMN_FAMILY,
214+
com.google.bigtable.admin.v2.AuthorizedView.FamilySubsets.newBuilder()
215+
.addQualifierPrefixes(com.google.protobuf.ByteString.EMPTY)
216+
.build())
217+
.build();
218+
com.google.bigtable.admin.v2.AuthorizedView authorizedViewObj =
219+
com.google.bigtable.admin.v2.AuthorizedView.newBuilder()
220+
.setSubsetView(subsetView)
221+
.setName(
222+
"projects/"
223+
+ projectId
224+
+ "/instances/"
225+
+ instanceId
226+
+ "/tables/"
227+
+ tableId
228+
+ "/authorizedViews/"
229+
+ authorizedViewId)
230+
.build();
231+
com.google.bigtable.admin.v2.UpdateAuthorizedViewRequest request =
232+
com.google.bigtable.admin.v2.UpdateAuthorizedViewRequest.newBuilder()
233+
.setAuthorizedView(authorizedViewObj)
234+
.setUpdateMask(
235+
com.google.protobuf.FieldMask.newBuilder().addPaths("subset_view").build())
236+
.build();
237+
com.google.bigtable.admin.v2.AuthorizedView authorizedView =
238+
adminClient.updateAuthorizedViewAsync(request).get();
239+
System.out.printf("AuthorizedView: %s updated successfully%n", authorizedView.getName());
240+
} catch (Exception e) {
241+
System.err.println("Failed to modify authorized view: " + e.getMessage());
183242
}
184243
// [END bigtable_update_authorized_view]
185244
}
186245

187246
/** Demonstrates how to get an authorized view's metadata. */
188-
public AuthorizedView getAuthorizedView() {
247+
public com.google.bigtable.admin.v2.AuthorizedView getAuthorizedView() {
189248
System.out.printf("%nGetting authorized view %s in table %s%n", authorizedViewId, tableId);
190249
// [START bigtable_get_authorized_view]
191-
AuthorizedView authorizedView = null;
250+
com.google.bigtable.admin.v2.AuthorizedView authorizedView = null;
192251
try {
193-
authorizedView = adminClient.getAuthorizedView(tableId, authorizedViewId);
194-
SubsetView subsetView = (SubsetView) authorizedView.getAuthorizedViewType();
252+
authorizedView =
253+
adminClient.getAuthorizedView(
254+
"projects/"
255+
+ projectId
256+
+ "/instances/"
257+
+ instanceId
258+
+ "/tables/"
259+
+ tableId
260+
+ "/authorizedViews/"
261+
+ authorizedViewId);
262+
com.google.bigtable.admin.v2.AuthorizedView.SubsetView subsetView =
263+
authorizedView.getSubsetView();
195264

196-
for (ByteString rowPrefix : subsetView.getRowPrefixes()) {
265+
for (ByteString rowPrefix : subsetView.getRowPrefixesList()) {
197266
System.out.printf("Row Prefix: %s%n", rowPrefix.toStringUtf8());
198267
}
199-
for (Map.Entry<String, FamilySubsets> entry : subsetView.getFamilySubsets().entrySet()) {
200-
for (ByteString qualifierPrefix : entry.getValue().getQualifierPrefixes()) {
268+
for (Map.Entry<String, com.google.bigtable.admin.v2.AuthorizedView.FamilySubsets> entry :
269+
subsetView.getFamilySubsetsMap().entrySet()) {
270+
for (ByteString qualifierPrefix : entry.getValue().getQualifierPrefixesList()) {
201271
System.out.printf(
202272
"Column Family: %s, Qualifier Prefix: %s%n",
203273
entry.getKey(), qualifierPrefix.toStringUtf8());
204274
}
205-
for (ByteString qualifier : entry.getValue().getQualifiers()) {
275+
for (ByteString qualifier : entry.getValue().getQualifiersList()) {
206276
System.out.printf(
207277
"Column Family: %s, Qualifier: %s%n", entry.getKey(), qualifier.toStringUtf8());
208278
}
@@ -221,9 +291,16 @@ public List<String> listAllAuthorizedViews() {
221291
// [START bigtable_list_authorized_views]
222292
List<String> authorizedViewIds = new ArrayList<>();
223293
try {
224-
authorizedViewIds = adminClient.listAuthorizedViews(tableId);
225-
for (String authorizedViewId : authorizedViewIds) {
226-
System.out.println(authorizedViewId);
294+
com.google.bigtable.admin.v2.ListAuthorizedViewsRequest request =
295+
com.google.bigtable.admin.v2.ListAuthorizedViewsRequest.newBuilder()
296+
.setParent(
297+
"projects/" + projectId + "/instances/" + instanceId + "/tables/" + tableId)
298+
.build();
299+
for (com.google.bigtable.admin.v2.AuthorizedView view :
300+
adminClient.listAuthorizedViews(request).iterateAll()) {
301+
String id = view.getName().substring(view.getName().lastIndexOf("/") + 1);
302+
System.out.println(id);
303+
authorizedViewIds.add(id);
227304
}
228305
} catch (NotFoundException e) {
229306
System.err.println(
@@ -238,7 +315,15 @@ public void deleteAuthorizedView() {
238315
System.out.printf("%nDeleting authorized view %s in table %s%n", authorizedViewId, tableId);
239316
// [START bigtable_delete_authorized_view]
240317
try {
241-
adminClient.deleteAuthorizedView(tableId, authorizedViewId);
318+
adminClient.deleteAuthorizedView(
319+
"projects/"
320+
+ projectId
321+
+ "/instances/"
322+
+ instanceId
323+
+ "/tables/"
324+
+ tableId
325+
+ "/authorizedViews/"
326+
+ authorizedViewId);
242327
System.out.printf("AuthorizedView: %s deleted successfully%n", authorizedViewId);
243328
} catch (NotFoundException e) {
244329
System.err.println("Failed to delete a non-existent authorized view: " + e.getMessage());

0 commit comments

Comments
 (0)