diff --git a/doc/v3-migration-guide.md b/doc/v3-migration-guide.md index d32c3e643ea35..dd860d9473b9c 100644 --- a/doc/v3-migration-guide.md +++ b/doc/v3-migration-guide.md @@ -247,6 +247,28 @@ auto limit = google::cloud::bigtable::RowReader::NO_ROWS_LIMIT; +
+Removed Endpoint Options + + +The `bigtable::DataEndpointOption`, `bigtable::AdminEndpointOption`, and +`bigtable::InstanceAdminEndpointOption` classes have been removed. Applications +should use `google::cloud::EndpointOption` instead. + +**Before:** + +```cpp +auto options = google::cloud::Options{}.set("..."); +``` + +**After:** + +```cpp +auto options = google::cloud::Options{}.set("..."); +``` + +
+
Removed bigtable::DataClient and related functions diff --git a/google/cloud/bigtable/CMakeLists.txt b/google/cloud/bigtable/CMakeLists.txt index 72776902b34f6..2a1e87682d6a2 100644 --- a/google/cloud/bigtable/CMakeLists.txt +++ b/google/cloud/bigtable/CMakeLists.txt @@ -188,6 +188,7 @@ add_library( internal/default_row_reader.h internal/defaults.cc internal/defaults.h + internal/endpoint_options.h internal/google_bytes_traits.cc internal/google_bytes_traits.h internal/logging_result_set_reader.cc diff --git a/google/cloud/bigtable/google_cloud_cpp_bigtable.bzl b/google/cloud/bigtable/google_cloud_cpp_bigtable.bzl index ec15dacaef281..18e4940539f6a 100644 --- a/google/cloud/bigtable/google_cloud_cpp_bigtable.bzl +++ b/google/cloud/bigtable/google_cloud_cpp_bigtable.bzl @@ -92,6 +92,7 @@ google_cloud_cpp_bigtable_hdrs = [ "internal/data_tracing_connection.h", "internal/default_row_reader.h", "internal/defaults.h", + "internal/endpoint_options.h", "internal/google_bytes_traits.h", "internal/logging_result_set_reader.h", "internal/metrics.h", diff --git a/google/cloud/bigtable/internal/defaults.cc b/google/cloud/bigtable/internal/defaults.cc index c7c1cd041ea86..9544730158bda 100644 --- a/google/cloud/bigtable/internal/defaults.cc +++ b/google/cloud/bigtable/internal/defaults.cc @@ -126,20 +126,24 @@ int DefaultConnectionPoolSize() { } Options HandleUniverseDomain(Options opts) { - if (!opts.has()) { + if (!opts.has<::google::cloud::bigtable_internal::DataEndpointOption>()) { auto ep = google::cloud::internal::UniverseDomainEndpoint( "bigtable.googleapis.com", opts); - opts.set(std::move(ep)); + opts.set<::google::cloud::bigtable_internal::DataEndpointOption>( + std::move(ep)); } - if (!opts.has()) { + if (!opts.has<::google::cloud::bigtable_internal::AdminEndpointOption>()) { auto ep = google::cloud::internal::UniverseDomainEndpoint( "bigtableadmin.googleapis.com", opts); - opts.set(std::move(ep)); + opts.set<::google::cloud::bigtable_internal::AdminEndpointOption>( + std::move(ep)); } - if (!opts.has()) { + if (!opts.has< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()) { auto ep = google::cloud::internal::UniverseDomainEndpoint( "bigtableadmin.googleapis.com", opts); - opts.set(std::move(ep)); + opts.set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + std::move(ep)); } return opts; } @@ -153,14 +157,16 @@ Options DefaultOptions(Options opts) { if (opts.has()) { auto const& ep = opts.get(); - if (!opts.has()) { - opts.set(ep); + if (!opts.has<::google::cloud::bigtable_internal::DataEndpointOption>()) { + opts.set<::google::cloud::bigtable_internal::DataEndpointOption>(ep); } - if (!opts.has()) { - opts.set(ep); + if (!opts.has<::google::cloud::bigtable_internal::AdminEndpointOption>()) { + opts.set<::google::cloud::bigtable_internal::AdminEndpointOption>(ep); } - if (!opts.has()) { - opts.set(ep); + if (!opts.has<::google::cloud::bigtable_internal:: + InstanceAdminEndpointOption>()) { + opts.set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + ep); } } @@ -168,7 +174,7 @@ Options DefaultOptions(Options opts) { GetEnv("GOOGLE_CLOUD_ENABLE_DIRECT_PATH").value_or(""); if (absl::c_any_of(absl::StrSplit(direct_path, ','), [](absl::string_view v) { return v == "bigtable"; })) { - opts.set( + opts.set<::google::cloud::bigtable_internal::DataEndpointOption>( "google-c2p:///directpath-bigtable.googleapis.com") .set("directpath-bigtable.googleapis.com"); @@ -180,15 +186,18 @@ Options DefaultOptions(Options opts) { auto emulator = GetEnv("BIGTABLE_EMULATOR_HOST"); if (emulator) { - opts.set(*emulator); - opts.set(*emulator); - opts.set(*emulator); + opts.set<::google::cloud::bigtable_internal::DataEndpointOption>(*emulator); + opts.set<::google::cloud::bigtable_internal::AdminEndpointOption>( + *emulator); + opts.set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + *emulator); } auto instance_admin_emulator = GetEnv("BIGTABLE_INSTANCE_ADMIN_EMULATOR_HOST"); if (instance_admin_emulator) { - opts.set(*std::move(instance_admin_emulator)); + opts.set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + *std::move(instance_admin_emulator)); } // Handle `UniverseDomainOption`. Note that we have already addressed the @@ -285,17 +294,21 @@ Options DefaultDataOptions(Options opts) { "bigtable.googleapis.com", opts); opts.set(std::move(ep)); } - return opts.set(opts.get()); + return opts.set( + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); } Options DefaultInstanceAdminOptions(Options opts) { opts = DefaultOptions(std::move(opts)); - return opts.set(opts.get()); + return opts.set( + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } Options DefaultTableAdminOptions(Options opts) { opts = DefaultOptions(std::move(opts)); - return opts.set(opts.get()); + return opts.set( + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); } } // namespace internal diff --git a/google/cloud/bigtable/internal/defaults_test.cc b/google/cloud/bigtable/internal/defaults_test.cc index 19f666a323504..aa4e50948c53f 100644 --- a/google/cloud/bigtable/internal/defaults_test.cc +++ b/google/cloud/bigtable/internal/defaults_test.cc @@ -14,6 +14,7 @@ #include "google/cloud/bigtable/internal/defaults.h" #include "google/cloud/bigtable/internal/client_options_defaults.h" +#include "google/cloud/bigtable/internal/endpoint_options.h" #include "google/cloud/bigtable/options.h" #include "google/cloud/common_options.h" #include "google/cloud/grpc_options.h" @@ -53,10 +54,15 @@ TEST(OptionsTest, Defaults) { "BIGTABLE_INSTANCE_ADMIN_EMULATOR_HOST", absl::nullopt); auto opts = DefaultOptions(); - EXPECT_EQ("bigtable.googleapis.com", opts.get()); - EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); - EXPECT_EQ("bigtableadmin.googleapis.com", - opts.get()); + EXPECT_EQ("bigtable.googleapis.com", + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "bigtableadmin.googleapis.com", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "bigtableadmin.googleapis.com", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); EXPECT_EQ(typeid(grpc::GoogleDefaultCredentials()), typeid(opts.get())); EXPECT_FALSE(opts.has()); @@ -94,9 +100,12 @@ TEST(OptionsTest, DefaultOptionsDoesNotOverride) { channel_args.SetString("test-key-1", "value-1"); auto opts = DefaultOptions( Options{} - .set("testdata.googleapis.com") - .set("testadmin.googleapis.com") - .set("testinstanceadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "testdata.googleapis.com") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "testadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "testinstanceadmin.googleapis.com") .set(grpc::InsecureChannelCredentials()) .set( TracingOptions{}.SetOptions("single_line_mode=F")) @@ -107,10 +116,15 @@ TEST(OptionsTest, DefaultOptionsDoesNotOverride) { .set({{"test-key-2", "value-2"}}) .set({"test-prefix"})); - EXPECT_EQ("testdata.googleapis.com", opts.get()); - EXPECT_EQ("testadmin.googleapis.com", opts.get()); - EXPECT_EQ("testinstanceadmin.googleapis.com", - opts.get()); + EXPECT_EQ("testdata.googleapis.com", + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "testadmin.googleapis.com", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "testinstanceadmin.googleapis.com", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); EXPECT_EQ(typeid(grpc::InsecureChannelCredentials()), typeid(opts.get())); EXPECT_FALSE(opts.get().single_line_mode()); @@ -134,29 +148,49 @@ TEST(OptionsTest, EndpointOptionSetsAll) { auto options = Options{}.set("endpoint-option"); options = DefaultOptions(std::move(options)); EXPECT_EQ("endpoint-option", options.get()); - EXPECT_EQ("endpoint-option", options.get()); - EXPECT_EQ("endpoint-option", options.get()); - EXPECT_EQ("endpoint-option", options.get()); + EXPECT_EQ( + "endpoint-option", + options.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "endpoint-option", + options.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "endpoint-option", + options.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(OptionsTest, EndpointOptionOverridden) { - auto options = Options{} - .set("ignored") - .set("data") - .set("table-admin") - .set("instance-admin"); + auto options = + Options{} + .set("ignored") + .set<::google::cloud::bigtable_internal::DataEndpointOption>("data") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "table-admin") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "instance-admin"); options = DefaultOptions(std::move(options)); - EXPECT_EQ("data", options.get()); - EXPECT_EQ("table-admin", options.get()); - EXPECT_EQ("instance-admin", options.get()); + EXPECT_EQ( + "data", + options.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "table-admin", + options.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "instance-admin", + options.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(OptionsTest, DefaultDataOptionsEndpoint) { auto options = Options{} - .set("data.googleapis.com") - .set("tableadmin.googleapis.com") - .set("instanceadmin.googleapis.com"); + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "data.googleapis.com") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "tableadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "instanceadmin.googleapis.com"); options = DefaultDataOptions(std::move(options)); EXPECT_EQ("data.googleapis.com", options.get()); @@ -168,9 +202,12 @@ TEST(OptionsTest, DefaultDataOptionsEndpoint) { TEST(OptionsTest, DefaultInstanceAdminOptions) { auto options = Options{} - .set("data.googleapis.com") - .set("tableadmin.googleapis.com") - .set("instanceadmin.googleapis.com"); + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "data.googleapis.com") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "tableadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "instanceadmin.googleapis.com"); options = DefaultInstanceAdminOptions(std::move(options)); EXPECT_EQ("instanceadmin.googleapis.com", options.get()); @@ -182,9 +219,12 @@ TEST(OptionsTest, DefaultInstanceAdminOptions) { TEST(OptionsTest, DefaultTableAdminOptions) { auto options = Options{} - .set("data.googleapis.com") - .set("tableadmin.googleapis.com") - .set("instanceadmin.googleapis.com"); + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "data.googleapis.com") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "tableadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "instanceadmin.googleapis.com"); options = DefaultTableAdminOptions(std::move(options)); EXPECT_EQ("tableadmin.googleapis.com", options.get()); @@ -285,9 +325,12 @@ TEST(OptionsTest, BigtableEndpointOptionsOverrideUniverseDomain) { auto options = Options{} .set("ud-option.net") - .set("data.googleapis.com") - .set("tableadmin.googleapis.com") - .set("instanceadmin.googleapis.com"); + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "data.googleapis.com") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "tableadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "instanceadmin.googleapis.com"); EXPECT_EQ(DefaultDataOptions(options).get(), "data.googleapis.com"); @@ -304,9 +347,11 @@ TEST(OptionsTest, BigtableEndpointEnvVarsOverrideUniverseDomain) { auto options = Options{} .set("ud-option.net") - .set("ignored-data.googleapis.com") - .set("ignored-tableadmin.googleapis.com") - .set( + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "ignored-data.googleapis.com") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "ignored-tableadmin.googleapis.com") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( "ignored-instanceadmin.googleapis.com") .set("ignored-endpoint.googleapis.com"); @@ -350,9 +395,15 @@ TEST(EndpointEnvTest, EmulatorEnvOnly) { ScopedEnvironment emulator("BIGTABLE_EMULATOR_HOST", "emulator-host:8000"); auto opts = DefaultOptions(); - EXPECT_EQ("emulator-host:8000", opts.get()); - EXPECT_EQ("emulator-host:8000", opts.get()); - EXPECT_EQ("emulator-host:8000", opts.get()); + EXPECT_EQ("emulator-host:8000", + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "emulator-host:8000", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "emulator-host:8000", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(EndpointEnvTest, InstanceEmulatorEnvOnly) { @@ -360,10 +411,15 @@ TEST(EndpointEnvTest, InstanceEmulatorEnvOnly) { "instance-emulator-host:9000"); auto opts = DefaultOptions(); - EXPECT_EQ("bigtable.googleapis.com", opts.get()); - EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); - EXPECT_EQ("instance-emulator-host:9000", - opts.get()); + EXPECT_EQ("bigtable.googleapis.com", + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "bigtableadmin.googleapis.com", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "instance-emulator-host:9000", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(EndpointEnvTest, InstanceEmulatorEnvOverridesOtherEnv) { @@ -372,10 +428,15 @@ TEST(EndpointEnvTest, InstanceEmulatorEnvOverridesOtherEnv) { "instance-emulator-host:9000"); auto opts = DefaultOptions(); - EXPECT_EQ("emulator-host:8000", opts.get()); - EXPECT_EQ("emulator-host:8000", opts.get()); - EXPECT_EQ("instance-emulator-host:9000", - opts.get()); + EXPECT_EQ("emulator-host:8000", + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "emulator-host:8000", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "instance-emulator-host:9000", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(EndpointEnvTest, EmulatorEnvOverridesUserOptions) { @@ -384,13 +445,22 @@ TEST(EndpointEnvTest, EmulatorEnvOverridesUserOptions) { auto opts = DefaultOptions( Options{} .set("ignored-any") - .set("ignored-data") - .set("ignored-admin") - .set("ignored-instance-admin")); - - EXPECT_EQ("emulator-host:8000", opts.get()); - EXPECT_EQ("emulator-host:8000", opts.get()); - EXPECT_EQ("emulator-host:8000", opts.get()); + .set<::google::cloud::bigtable_internal::DataEndpointOption>( + "ignored-data") + .set<::google::cloud::bigtable_internal::AdminEndpointOption>( + "ignored-admin") + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "ignored-instance-admin")); + + EXPECT_EQ("emulator-host:8000", + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); + EXPECT_EQ( + "emulator-host:8000", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "emulator-host:8000", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(EndpointEnvTest, InstanceEmulatorEnvOverridesUserOption) { @@ -400,10 +470,13 @@ TEST(EndpointEnvTest, InstanceEmulatorEnvOverridesUserOption) { auto opts = DefaultOptions( Options{} .set("ignored-any") - .set("ignored-instance-admin")); + .set<::google::cloud::bigtable_internal::InstanceAdminEndpointOption>( + "ignored-instance-admin")); - EXPECT_EQ("instance-emulator-host:9000", - opts.get()); + EXPECT_EQ( + "instance-emulator-host:9000", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); } TEST(EndpointEnvTest, EmulatorEnvDefaultsToInsecureCredentials) { @@ -431,12 +504,16 @@ TEST(EndpointEnvTest, DirectPathEnabled) { auto opts = DefaultOptions(); EXPECT_EQ("google-c2p:///directpath-bigtable.googleapis.com", - opts.get()); + opts.get<::google::cloud::bigtable_internal::DataEndpointOption>()); EXPECT_EQ("directpath-bigtable.googleapis.com", opts.get()); // Admin endpoints are not affected. - EXPECT_EQ("bigtableadmin.googleapis.com", opts.get()); - EXPECT_EQ("bigtableadmin.googleapis.com", - opts.get()); + EXPECT_EQ( + "bigtableadmin.googleapis.com", + opts.get<::google::cloud::bigtable_internal::AdminEndpointOption>()); + EXPECT_EQ( + "bigtableadmin.googleapis.com", + opts.get< + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption>()); EXPECT_EQ(1, opts.get()); } diff --git a/google/cloud/bigtable/internal/endpoint_options.h b/google/cloud/bigtable/internal/endpoint_options.h new file mode 100644 index 0000000000000..58c1185263dff --- /dev/null +++ b/google/cloud/bigtable/internal/endpoint_options.h @@ -0,0 +1,58 @@ +// Copyright 2026 Google LLC +// +// 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. + +#ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_INTERNAL_ENDPOINT_OPTIONS_H +#define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_INTERNAL_ENDPOINT_OPTIONS_H + +#include "google/cloud/version.h" +#include + +namespace google { +namespace cloud { +namespace bigtable_internal { +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN + +/** + * The endpoint for data operations. + * + */ +struct DataEndpointOption { + using Type = std::string; +}; + +/** + * The endpoint for table admin operations. + * + */ +struct AdminEndpointOption { + using Type = std::string; +}; + +/** + * The endpoint for instance admin operations. + * + * In most scenarios this should have the same value as `AdminEndpointOption`. + * The most common exception is testing, where the emulator for instance admin + * operations may be different than the emulator for admin and data operations. + * */ +struct InstanceAdminEndpointOption { + using Type = std::string; +}; + +GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END +} // namespace bigtable_internal +} // namespace cloud +} // namespace google + +#endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_BIGTABLE_INTERNAL_ENDPOINT_OPTIONS_H diff --git a/google/cloud/bigtable/options.h b/google/cloud/bigtable/options.h index 865d5c009547e..efc2d81ea607c 100644 --- a/google/cloud/bigtable/options.h +++ b/google/cloud/bigtable/options.h @@ -39,6 +39,7 @@ */ #include "google/cloud/bigtable/idempotent_mutation_policy.h" +#include "google/cloud/bigtable/internal/endpoint_options.h" #include "google/cloud/bigtable/retry_policy.h" #include "google/cloud/bigtable/rpc_retry_policy.h" #include "google/cloud/bigtable/version.h" @@ -99,37 +100,6 @@ struct ReverseScanOption { using Type = bool; }; -/** - * The endpoint for data operations. - * - * @deprecated Please use `google::cloud::EndpointOption` instead. - */ -struct DataEndpointOption { - using Type = std::string; -}; - -/** - * The endpoint for table admin operations. - * - * @deprecated Please use `google::cloud::EndpointOption` instead. - */ -struct AdminEndpointOption { - using Type = std::string; -}; - -/** - * The endpoint for instance admin operations. - * - * In most scenarios this should have the same value as `AdminEndpointOption`. - * The most common exception is testing, where the emulator for instance admin - * operations may be different than the emulator for admin and data operations. - * - * @deprecated Please use `google::cloud::EndpointOption` instead. - */ -struct InstanceAdminEndpointOption { - using Type = std::string; -}; - /** * Minimum time in ms to refresh connections. * @@ -207,9 +177,10 @@ struct QueryPlanRefreshFunctionRetryPolicyOption { /// The complete list of options accepted by `bigtable::*Client` using ClientOptionList = - OptionList; + OptionList<::google::cloud::bigtable_internal::DataEndpointOption, + ::google::cloud::bigtable_internal::AdminEndpointOption, + ::google::cloud::bigtable_internal::InstanceAdminEndpointOption, + MinConnectionRefreshOption, MaxConnectionRefreshOption>; /** * Option to configure the retry policy used by `Table`.