Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 48 additions & 1 deletion google/cloud/bigtable/admin_client.cc
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,12 @@ namespace {
class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
public:
DefaultAdminClient(std::string project, Options options)
: project_(std::move(project)), impl_(std::move(options)) {}
: project_(std::move(project)),
user_project_(
options.has<UserProjectOption>()
? absl::nullopt
: absl::make_optional(options.get<UserProjectOption>())),
impl_(std::move(options)) {}

std::string const& project() const override { return project_; }
std::shared_ptr<grpc::Channel> Channel() override { return impl_.Channel(); }
Expand All @@ -134,12 +139,14 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
grpc::Status CreateTable(grpc::ClientContext* context,
btadmin::CreateTableRequest const& request,
btadmin::Table* response) override {
ApplyOptions(context);
return impl_.Stub()->CreateTable(context, request, response);
}

grpc::Status ListTables(grpc::ClientContext* context,
btadmin::ListTablesRequest const& request,
btadmin::ListTablesResponse* response) override {
ApplyOptions(context);
return impl_.Stub()->ListTables(context, request, response);
}

Expand All @@ -148,122 +155,141 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
AsyncListTables(grpc::ClientContext* context,
btadmin::ListTablesRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncListTables(context, request, cq);
}

grpc::Status GetTable(grpc::ClientContext* context,
btadmin::GetTableRequest const& request,
btadmin::Table* response) override {
ApplyOptions(context);
return impl_.Stub()->GetTable(context, request, response);
}

std::unique_ptr<grpc::ClientAsyncResponseReaderInterface<btadmin::Table>>
AsyncGetTable(grpc::ClientContext* context,
btadmin::GetTableRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncGetTable(context, request, cq);
}

grpc::Status DeleteTable(grpc::ClientContext* context,
btadmin::DeleteTableRequest const& request,
google::protobuf::Empty* response) override {
ApplyOptions(context);
return impl_.Stub()->DeleteTable(context, request, response);
}

grpc::Status CreateBackup(grpc::ClientContext* context,
btadmin::CreateBackupRequest const& request,
google::longrunning::Operation* response) override {
ApplyOptions(context);
return impl_.Stub()->CreateBackup(context, request, response);
}

grpc::Status GetBackup(grpc::ClientContext* context,
btadmin::GetBackupRequest const& request,
btadmin::Backup* response) override {
ApplyOptions(context);
return impl_.Stub()->GetBackup(context, request, response);
}

grpc::Status UpdateBackup(grpc::ClientContext* context,
btadmin::UpdateBackupRequest const& request,
btadmin::Backup* response) override {
ApplyOptions(context);
return impl_.Stub()->UpdateBackup(context, request, response);
}

grpc::Status DeleteBackup(grpc::ClientContext* context,
btadmin::DeleteBackupRequest const& request,
google::protobuf::Empty* response) override {
ApplyOptions(context);
return impl_.Stub()->DeleteBackup(context, request, response);
}

grpc::Status ListBackups(grpc::ClientContext* context,
btadmin::ListBackupsRequest const& request,
btadmin::ListBackupsResponse* response) override {
ApplyOptions(context);
return impl_.Stub()->ListBackups(context, request, response);
}

grpc::Status RestoreTable(grpc::ClientContext* context,
btadmin::RestoreTableRequest const& request,
google::longrunning::Operation* response) override {
ApplyOptions(context);
return impl_.Stub()->RestoreTable(context, request, response);
}

grpc::Status ModifyColumnFamilies(
grpc::ClientContext* context,
btadmin::ModifyColumnFamiliesRequest const& request,
btadmin::Table* response) override {
ApplyOptions(context);
return impl_.Stub()->ModifyColumnFamilies(context, request, response);
}

grpc::Status DropRowRange(grpc::ClientContext* context,
btadmin::DropRowRangeRequest const& request,
google::protobuf::Empty* response) override {
ApplyOptions(context);
return impl_.Stub()->DropRowRange(context, request, response);
}

grpc::Status GenerateConsistencyToken(
grpc::ClientContext* context,
btadmin::GenerateConsistencyTokenRequest const& request,
btadmin::GenerateConsistencyTokenResponse* response) override {
ApplyOptions(context);
return impl_.Stub()->GenerateConsistencyToken(context, request, response);
}

grpc::Status CheckConsistency(
grpc::ClientContext* context,
btadmin::CheckConsistencyRequest const& request,
btadmin::CheckConsistencyResponse* response) override {
ApplyOptions(context);
return impl_.Stub()->CheckConsistency(context, request, response);
}

grpc::Status GetOperation(
grpc::ClientContext* context,
google::longrunning::GetOperationRequest const& request,
google::longrunning::Operation* response) override {
ApplyOptions(context);
auto stub = google::longrunning::Operations::NewStub(Channel());
return stub->GetOperation(context, request, response);
}

grpc::Status GetIamPolicy(grpc::ClientContext* context,
google::iam::v1::GetIamPolicyRequest const& request,
google::iam::v1::Policy* response) override {
ApplyOptions(context);
return impl_.Stub()->GetIamPolicy(context, request, response);
}

grpc::Status SetIamPolicy(grpc::ClientContext* context,
google::iam::v1::SetIamPolicyRequest const& request,
google::iam::v1::Policy* response) override {
ApplyOptions(context);
return impl_.Stub()->SetIamPolicy(context, request, response);
}

grpc::Status TestIamPermissions(
grpc::ClientContext* context,
google::iam::v1::TestIamPermissionsRequest const& request,
google::iam::v1::TestIamPermissionsResponse* response) override {
ApplyOptions(context);
return impl_.Stub()->TestIamPermissions(context, request, response);
}

std::unique_ptr<grpc::ClientAsyncResponseReaderInterface<btadmin::Table>>
AsyncCreateTable(grpc::ClientContext* context,
btadmin::CreateTableRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncCreateTable(context, request, cq);
}

Expand All @@ -272,6 +298,7 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
AsyncDeleteTable(grpc::ClientContext* context,
btadmin::DeleteTableRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncDeleteTable(context, request, cq);
}

Expand All @@ -280,20 +307,23 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
AsyncCreateBackup(grpc::ClientContext* context,
btadmin::CreateBackupRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncCreateBackup(context, request, cq);
}

std::unique_ptr<grpc::ClientAsyncResponseReaderInterface<btadmin::Backup>>
AsyncGetBackup(grpc::ClientContext* context,
btadmin::GetBackupRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncGetBackup(context, request, cq);
}

std::unique_ptr<grpc::ClientAsyncResponseReaderInterface<btadmin::Backup>>
AsyncUpdateBackup(grpc::ClientContext* context,
btadmin::UpdateBackupRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncUpdateBackup(context, request, cq);
}

Expand All @@ -302,6 +332,7 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
AsyncDeleteBackup(grpc::ClientContext* context,
btadmin::DeleteBackupRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncDeleteBackup(context, request, cq);
}

Expand All @@ -310,6 +341,7 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
AsyncListBackups(grpc::ClientContext* context,
btadmin::ListBackupsRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncListBackups(context, request, cq);
}

Expand All @@ -318,13 +350,15 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
AsyncRestoreTable(grpc::ClientContext* context,
btadmin::RestoreTableRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncRestoreTable(context, request, cq);
}

std::unique_ptr<grpc::ClientAsyncResponseReaderInterface<btadmin::Table>>
AsyncModifyColumnFamilies(grpc::ClientContext* context,
btadmin::ModifyColumnFamiliesRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncModifyColumnFamilies(context, request, cq);
}

Expand All @@ -333,6 +367,7 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
AsyncDropRowRange(grpc::ClientContext* context,
btadmin::DropRowRangeRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncDropRowRange(context, request, cq);
};

Expand All @@ -342,6 +377,7 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
grpc::ClientContext* context,
btadmin::GenerateConsistencyTokenRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncGenerateConsistencyToken(context, request, cq);
}

Expand All @@ -350,6 +386,7 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
AsyncCheckConsistency(grpc::ClientContext* context,
btadmin::CheckConsistencyRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncCheckConsistency(context, request, cq);
}

Expand All @@ -358,6 +395,7 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
AsyncGetIamPolicy(grpc::ClientContext* context,
google::iam::v1::GetIamPolicyRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncGetIamPolicy(context, request, cq);
}

Expand All @@ -366,6 +404,7 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
AsyncSetIamPolicy(grpc::ClientContext* context,
google::iam::v1::SetIamPolicyRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncSetIamPolicy(context, request, cq);
}

Expand All @@ -375,6 +414,7 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
grpc::ClientContext* context,
google::iam::v1::TestIamPermissionsRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
return impl_.Stub()->AsyncTestIamPermissions(context, request, cq);
}

Expand All @@ -383,6 +423,7 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
AsyncGetOperation(grpc::ClientContext* context,
google::longrunning::GetOperationRequest const& request,
grpc::CompletionQueue* cq) override {
ApplyOptions(context);
auto stub = google::longrunning::Operations::NewStub(Channel());
return std::unique_ptr<grpc::ClientAsyncResponseReaderInterface<
google::longrunning::Operation>>(
Expand All @@ -394,7 +435,13 @@ class DefaultAdminClient : public google::cloud::bigtable::AdminClient {
return impl_.BackgroundThreadsFactory();
}

void ApplyOptions(grpc::ClientContext* context) {
if (!user_project_) return;
context->AddMetadata("x-goog-user-project", *user_project_);
}

std::string project_;
absl::optional<std::string> user_project_;
internal::CommonClient<btadmin::BigtableTableAdmin> impl_;
};

Expand Down
Loading