Visitar URL original
feat: support configuring universe domain for BigtableConnection (#4624) · googleapis/java-bigtable-hbase@287bcc2 · GitHub
Skip to content

Commit 287bcc2

Browse files
authored
feat: support configuring universe domain for BigtableConnection (#4624)
Add a new configuration key google.bigtable.universe.domain (BIGTABLE_UNIVERSE_DOMAIN_KEY). When set, the universe domain is applied to the data client, table admin client, and instance admin client via StubSettings.setUniverseDomain in the shared connection configuration. Change-Id: I7cf19844406a467c4ddc4cb02c35446706ad4daa
1 parent 18d7e0b commit 287bcc2

3 files changed

Lines changed: 38 additions & 0 deletions

File tree

‎bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/BigtableOptionsFactory.java‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@ public class BigtableOptionsFactory {
4646
/** Constant <code>APP_PROFILE_ID_KEY="google.bigtable.app_profile.id"</code> */
4747
public static final String APP_PROFILE_ID_KEY = "google.bigtable.app_profile.id";
4848

49+
/**
50+
* Key to set the universe domain that the client will connect to. When set, it is applied to both
51+
* the data client and the admin client. Constant <code>
52+
* BIGTABLE_UNIVERSE_DOMAIN_KEY="google.bigtable.universe.domain"</code>
53+
*/
54+
public static final String BIGTABLE_UNIVERSE_DOMAIN_KEY = "google.bigtable.universe.domain";
55+
4956
/**
5057
* Constant <code>BIGTABLE_SNAPSHOT_CLUSTER_ID_KEY="google.bigtable.snapshot.cluster.id"</code>
5158
*/

‎bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/veneer/BigtableHBaseVeneerSettings.java‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_SERVICE_ACCOUNT_JSON_VALUE_KEY;
4747
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_SERVICE_ACCOUNT_P12_KEYFILE_LOCATION_KEY;
4848
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_TEST_IDLE_TIMEOUT_MS;
49+
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_UNIVERSE_DOMAIN_KEY;
4950
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_USE_BATCH;
5051
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_USE_CACHED_DATA_CHANNEL_POOL;
5152
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_USE_PLAINTEXT_NEGOTIATION;
@@ -471,6 +472,16 @@ private void configureConnection(
471472
Optional<String> endpointOverride = Optional.absent();
472473
Optional<String> jwtAudienceOverride =
473474
Optional.fromNullable(configuration.get(BIGTABLE_JWT_AUDIENCE_KEY));
475+
Optional<String> universeDomain =
476+
Optional.fromNullable(configuration.get(BIGTABLE_UNIVERSE_DOMAIN_KEY));
477+
478+
// Apply the universe domain to both the data client and the admin client. When set, the veneer
479+
// resolves the endpoint from the universe domain unless an explicit host/port override is
480+
// provided.
481+
if (universeDomain.isPresent() && !Strings.isNullOrEmpty(universeDomain.get())) {
482+
stubSettings.setUniverseDomain(universeDomain.get());
483+
LOG.debug("%s is configured at %s", BIGTABLE_UNIVERSE_DOMAIN_KEY, universeDomain.get());
484+
}
474485

475486
if (hostOverride.isPresent() || portOverride.isPresent()) {
476487
endpointOverride =

‎bigtable-client-core-parent/bigtable-hbase/src/test/java/com/google/cloud/bigtable/hbase/wrappers/veneer/TestBigtableHBaseVeneerSettings.java‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_RPC_ATTEMPT_TIMEOUT_MS_KEY;
3333
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_RPC_TIMEOUT_MS_KEY;
3434
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_TRACING_COOKIE;
35+
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_UNIVERSE_DOMAIN_KEY;
3536
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_USE_CACHED_DATA_CHANNEL_POOL;
3637
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_USE_PLAINTEXT_NEGOTIATION;
3738
import static com.google.cloud.bigtable.hbase.BigtableOptionsFactory.BIGTABLE_USE_SERVICE_ACCOUNTS_KEY;
@@ -186,6 +187,25 @@ public void testAdminSettingsBasicKeys() throws IOException {
186187
credentials, adminSettings.getStubSettings().getCredentialsProvider().getCredentials());
187188
}
188189

190+
@Test
191+
public void testUniverseDomainIsAppliedToDataAndAdminClients() throws IOException {
192+
String universeDomain = "test.universe.domain";
193+
// A universe domain resolves the endpoint on its own, so exercise it without a host override.
194+
configuration = new Configuration(false);
195+
configuration.set(BigtableOptionsFactory.PROJECT_ID_KEY, TEST_PROJECT_ID);
196+
configuration.set(BigtableOptionsFactory.INSTANCE_ID_KEY, TEST_INSTANCE_ID);
197+
configuration.set(BIGTABLE_UNIVERSE_DOMAIN_KEY, universeDomain);
198+
199+
BigtableHBaseVeneerSettings settings =
200+
(BigtableHBaseVeneerSettings) BigtableHBaseSettings.create(configuration);
201+
202+
assertEquals(universeDomain, settings.getDataSettings().getStubSettings().getUniverseDomain());
203+
assertEquals(
204+
universeDomain, settings.getTableAdminSettings().getStubSettings().getUniverseDomain());
205+
assertEquals(
206+
universeDomain, settings.getInstanceAdminSettings().getStubSettings().getUniverseDomain());
207+
}
208+
189209
@Test
190210
public void testAdminSettingsChannelPool() throws IOException {
191211
// should be ignored

0 commit comments

Comments
 (0)