Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mixin prototype #2

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
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
1 change: 1 addition & 0 deletions google/cloud/datamigration/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ service_dirs = [
googleapis_deps = [
"@com_google_googleapis//google/cloud/clouddms/logging/v1:logging_cc_grpc",
"@com_google_googleapis//google/cloud/clouddms/v1:clouddms_cc_grpc",
"@com_google_googleapis//google/cloud/location:location_cc_grpc",
]

cc_gapic_library(
Expand Down
11 changes: 11 additions & 0 deletions google/cloud/datamigration/quickstart/quickstart.cc
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,22 @@ int main(int argc, char* argv[]) try {
auto client = datamigration::DataMigrationServiceClient(
datamigration::MakeDataMigrationServiceConnection());

std::cout << "------------------------TEST ListMigrationJobs------------------------" << std::endl;
std::cout << "location.FullName() = " << location.FullName() << std::endl;
for (auto mj : client.ListMigrationJobs(location.FullName())) {
if (!mj) throw std::move(mj).status();
std::cout << mj->DebugString() << "\n";
}

std::cout << "------------------------TEST ListLocations------------------------" << std::endl;
google::cloud::location::ListLocationsRequest ll_req;
*ll_req.mutable_name() = "projects/" + std::string(argv[1]);
std::cout << "ListLocationsRequest name = " << ll_req.name() << "\n";
for (auto l : client.ListLocations(ll_req)) {
if (!l) throw std::move(l).status();
std::cout << l->DebugString() << "\n";
}

return 0;
} catch (google::cloud::Status const& status) {
std::cerr << "google::cloud::Status thrown: " << status << "\n";
Expand Down
8 changes: 8 additions & 0 deletions google/cloud/datamigration/v1/data_migration_client.cc
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,14 @@ DataMigrationServiceClient::ListMigrationJobs(std::string const& parent,
return connection_->ListMigrationJobs(request);
}

StreamRange<google::cloud::location::Location>
DataMigrationServiceClient::ListLocations(
google::cloud::location::ListLocationsRequest request,
Options opts) {
internal::OptionsSpan span(internal::MergeOptions(std::move(opts), options_));
return connection_->ListLocations(std::move(request));
}

StreamRange<google::cloud::clouddms::v1::MigrationJob>
DataMigrationServiceClient::ListMigrationJobs(
google::cloud::clouddms::v1::ListMigrationJobsRequest request,
Expand Down
4 changes: 4 additions & 0 deletions google/cloud/datamigration/v1/data_migration_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ class DataMigrationServiceClient {
}
///@}

StreamRange<google::cloud::location::Location> ListLocations(
google::cloud::location::ListLocationsRequest request,
Options opts = {});

// clang-format off
///
/// Lists migration jobs in a given project and location.
Expand Down
7 changes: 7 additions & 0 deletions google/cloud/datamigration/v1/data_migration_connection.cc
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN

DataMigrationServiceConnection::~DataMigrationServiceConnection() = default;

StreamRange<google::cloud::location::Location>
DataMigrationServiceConnection::ListLocations(
google::cloud::location::ListLocationsRequest request) {
return google::cloud::internal::MakeUnimplementedPaginationRange<
StreamRange<google::cloud::location::Location>>();
}

StreamRange<google::cloud::clouddms::v1::MigrationJob>
DataMigrationServiceConnection::ListMigrationJobs(
google::cloud::clouddms::v1::
Expand Down
6 changes: 6 additions & 0 deletions google/cloud/datamigration/v1/data_migration_connection.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
#include "google/cloud/version.h"
#include <google/cloud/clouddms/v1/clouddms.pb.h>
#include <google/longrunning/operations.grpc.pb.h>
#include <google/cloud/location/locations.grpc.pb.h>

#include <memory>

namespace google {
Expand Down Expand Up @@ -191,6 +193,10 @@ class DataMigrationServiceConnection {

virtual Options options() { return Options{}; }

virtual StreamRange<google::cloud::location::Location>
ListLocations(
google::cloud::location::ListLocationsRequest request);

virtual StreamRange<google::cloud::clouddms::v1::MigrationJob>
ListMigrationJobs(
google::cloud::clouddms::v1::ListMigrationJobsRequest request);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ DataMigrationServiceConnectionIdempotencyPolicy::clone() const {
*this);
}

Idempotency DataMigrationServiceConnectionIdempotencyPolicy::ListLocations(
google::cloud::location::ListLocationsRequest) { // NOLINT
return Idempotency::kIdempotent;
}

Idempotency DataMigrationServiceConnectionIdempotencyPolicy::ListMigrationJobs(
google::cloud::clouddms::v1::ListMigrationJobsRequest) { // NOLINT
return Idempotency::kIdempotent;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "google/cloud/idempotency.h"
#include "google/cloud/version.h"
#include <google/cloud/clouddms/v1/clouddms.grpc.pb.h>
#include <google/cloud/location/locations.grpc.pb.h>
#include <memory>

namespace google {
Expand All @@ -37,6 +38,9 @@ class DataMigrationServiceConnectionIdempotencyPolicy {
virtual std::unique_ptr<DataMigrationServiceConnectionIdempotencyPolicy>
clone() const;

virtual google::cloud::Idempotency ListLocations(
google::cloud::location::ListLocationsRequest request);

virtual google::cloud::Idempotency ListMigrationJobs(
google::cloud::clouddms::v1::ListMigrationJobsRequest request);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ DataMigrationServiceAuth::DataMigrationServiceAuth(
std::shared_ptr<DataMigrationServiceStub> child)
: auth_(std::move(auth)), child_(std::move(child)) {}

StatusOr<google::cloud::location::ListLocationsResponse>
DataMigrationServiceAuth::ListLocations(
grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const& request) {
google::cloud::location::ListLocationsResponse response;
auto status = auth_->ConfigureContext(context);
if (!status.ok()) return status;
return child_->ListLocations(context, options, request);
}

StatusOr<google::cloud::clouddms::v1::ListMigrationJobsResponse>
DataMigrationServiceAuth::ListMigrationJobs(
grpc::ClientContext& context, Options const& options,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ class DataMigrationServiceAuth : public DataMigrationServiceStub {
std::shared_ptr<google::cloud::internal::GrpcAuthenticationStrategy> auth,
std::shared_ptr<DataMigrationServiceStub> child);

StatusOr<google::cloud::location::ListLocationsResponse> ListLocations(
grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const& request) override;

StatusOr<google::cloud::clouddms::v1::ListMigrationJobsResponse>
ListMigrationJobs(grpc::ClientContext& context, Options const& options,
google::cloud::clouddms::v1::ListMigrationJobsRequest const&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,41 @@ DataMigrationServiceConnectionImpl::DataMigrationServiceConnectionImpl(
options_(internal::MergeOptions(
std::move(options), DataMigrationServiceConnection::options())) {}

StreamRange<google::cloud::location::Location>
DataMigrationServiceConnectionImpl::ListLocations(
google::cloud::location::ListLocationsRequest request) {
request.clear_page_token();
auto current = google::cloud::internal::SaveCurrentOptions();
auto idempotency = idempotency_policy(*current)->ListLocations(request);
char const* function_name = __func__;
return google::cloud::internal::MakePaginationRange<
StreamRange<google::cloud::location::Location>>(
current, std::move(request),
[idempotency, function_name, stub = stub_,
retry =
std::shared_ptr<datamigration_v1::DataMigrationServiceRetryPolicy>(
retry_policy(*current)),
backoff = std::shared_ptr<BackoffPolicy>(backoff_policy(*current))](
Options const& options,
google::cloud::location::ListLocationsRequest const& r) {
return google::cloud::internal::RetryLoop(
retry->clone(), backoff->clone(), idempotency,
[stub](grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const&
request) {
return stub->ListLocations(context, options, request);
},
options, r, function_name);
},
[](google::cloud::location::ListLocationsResponse r) {
std::vector<google::cloud::location::Location> result(
r.locations().size());
auto& messages = *r.mutable_locations();
std::move(messages.begin(), messages.end(), result.begin());
return result;
});
}

StreamRange<google::cloud::clouddms::v1::MigrationJob>
DataMigrationServiceConnectionImpl::ListMigrationJobs(
google::cloud::clouddms::v1::ListMigrationJobsRequest request) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ class DataMigrationServiceConnectionImpl

Options options() override { return options_; }

StreamRange<google::cloud::location::Location> ListLocations(
google::cloud::location::ListLocationsRequest request) override;

StreamRange<google::cloud::clouddms::v1::MigrationJob> ListMigrationJobs(
google::cloud::clouddms::v1::ListMigrationJobsRequest request) override;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,18 @@ DataMigrationServiceLogging::DataMigrationServiceLogging(
TracingOptions tracing_options, std::set<std::string> const&)
: child_(std::move(child)), tracing_options_(std::move(tracing_options)) {}

StatusOr<google::cloud::location::ListLocationsResponse>
DataMigrationServiceLogging::ListLocations(
grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const& request) {
return google::cloud::internal::LogWrapper(
[this](grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const& request) {
return child_->ListLocations(context, options, request);
},
context, options, request, __func__, tracing_options_);
}

StatusOr<google::cloud::clouddms::v1::ListMigrationJobsResponse>
DataMigrationServiceLogging::ListMigrationJobs(
grpc::ClientContext& context, Options const& options,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ class DataMigrationServiceLogging : public DataMigrationServiceStub {
TracingOptions tracing_options,
std::set<std::string> const& components);

StatusOr<google::cloud::location::ListLocationsResponse> ListLocations(
grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const& request) override;

StatusOr<google::cloud::clouddms::v1::ListMigrationJobsResponse>
ListMigrationJobs(grpc::ClientContext& context, Options const& options,
google::cloud::clouddms::v1::ListMigrationJobsRequest const&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,14 @@ DataMigrationServiceMetadata::DataMigrationServiceMetadata(
? google::cloud::internal::GeneratedLibClientHeader()
: std::move(api_client_header)) {}

StatusOr<google::cloud::location::ListLocationsResponse>
DataMigrationServiceMetadata::ListLocations(
grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const& request) {
SetMetadata(context, options);
return child_->ListLocations(context, options, request);
}

StatusOr<google::cloud::clouddms::v1::ListMigrationJobsResponse>
DataMigrationServiceMetadata::ListMigrationJobs(
grpc::ClientContext& context, Options const& options,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ class DataMigrationServiceMetadata : public DataMigrationServiceStub {
std::multimap<std::string, std::string> fixed_metadata,
std::string api_client_header = "");

StatusOr<google::cloud::location::ListLocationsResponse> ListLocations(
grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const& request) override;

StatusOr<google::cloud::clouddms::v1::ListMigrationJobsResponse>
ListMigrationJobs(grpc::ClientContext& context, Options const& options,
google::cloud::clouddms::v1::ListMigrationJobsRequest const&
Expand Down
13 changes: 13 additions & 0 deletions google/cloud/datamigration/v1/internal/data_migration_stub.cc
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include "google/cloud/status_or.h"
#include <google/cloud/clouddms/v1/clouddms.grpc.pb.h>
#include <google/longrunning/operations.grpc.pb.h>
#include <google/cloud/location/locations.pb.h>
#include <memory>
#include <utility>

Expand All @@ -31,6 +32,18 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN

DataMigrationServiceStub::~DataMigrationServiceStub() = default;

StatusOr<google::cloud::location::ListLocationsResponse>
DefaultDataMigrationServiceStub::ListLocations(
grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const& request) {
google::cloud::location::ListLocationsResponse response;
auto status = locations_stub_->ListLocations(&context, request, &response);
if (!status.ok()) {
return google::cloud::MakeStatusFromRpcError(status);
}
return response;
}

StatusOr<google::cloud::clouddms::v1::ListMigrationJobsResponse>
DefaultDataMigrationServiceStub::ListMigrationJobs(
grpc::ClientContext& context, Options const&,
Expand Down
17 changes: 16 additions & 1 deletion google/cloud/datamigration/v1/internal/data_migration_stub.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include "google/cloud/version.h"
#include <google/cloud/clouddms/v1/clouddms.grpc.pb.h>
#include <google/longrunning/operations.grpc.pb.h>
#include <google/cloud/location/locations.grpc.pb.h>
#include <memory>
#include <utility>

Expand All @@ -38,6 +39,10 @@ class DataMigrationServiceStub {
public:
virtual ~DataMigrationServiceStub() = 0;

virtual StatusOr<google::cloud::location::ListLocationsResponse> ListLocations(
grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const& request) = 0;

virtual StatusOr<google::cloud::clouddms::v1::ListMigrationJobsResponse>
ListMigrationJobs(
grpc::ClientContext& context, Options const& options,
Expand Down Expand Up @@ -450,9 +455,16 @@ class DefaultDataMigrationServiceStub : public DataMigrationServiceStub {
std::unique_ptr<
google::cloud::clouddms::v1::DataMigrationService::StubInterface>
grpc_stub,
std::unique_ptr<google::cloud::location::Locations::StubInterface>
location_stub,
std::unique_ptr<google::longrunning::Operations::StubInterface>
operations)
: grpc_stub_(std::move(grpc_stub)), operations_(std::move(operations)) {}
: grpc_stub_(std::move(grpc_stub)), locations_stub_(std::move(location_stub)),
operations_(std::move(operations)) {}

StatusOr<google::cloud::location::ListLocationsResponse> ListLocations(
grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const& request) override;

StatusOr<google::cloud::clouddms::v1::ListMigrationJobsResponse>
ListMigrationJobs(grpc::ClientContext& context, Options const& options,
Expand Down Expand Up @@ -851,6 +863,9 @@ class DefaultDataMigrationServiceStub : public DataMigrationServiceStub {
std::unique_ptr<
google::cloud::clouddms::v1::DataMigrationService::StubInterface>
grpc_stub_;
std::unique_ptr<
google::cloud::location::Locations::StubInterface>
locations_stub_;
std::unique_ptr<google::longrunning::Operations::StubInterface> operations_;
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "google/cloud/log.h"
#include "google/cloud/options.h"
#include <google/cloud/clouddms/v1/clouddms.grpc.pb.h>
#include <google/cloud/location/locations.pb.h>
#include <memory>
#include <utility>

Expand All @@ -44,9 +45,11 @@ std::shared_ptr<DataMigrationServiceStub> CreateDefaultDataMigrationServiceStub(
internal::MakeChannelArguments(options));
auto service_grpc_stub =
google::cloud::clouddms::v1::DataMigrationService::NewStub(channel);
auto service_location_stub = google::cloud::location::Locations::NewStub(channel);
std::shared_ptr<DataMigrationServiceStub> stub =
std::make_shared<DefaultDataMigrationServiceStub>(
std::move(service_grpc_stub),
std::move(service_location_stub),
google::longrunning::Operations::NewStub(channel));

if (auth->RequiresConfigureContext()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,18 @@ DataMigrationServiceTracingStub::DataMigrationServiceTracingStub(
std::shared_ptr<DataMigrationServiceStub> child)
: child_(std::move(child)), propagator_(internal::MakePropagator()) {}

StatusOr<google::cloud::location::ListLocationsResponse>
DataMigrationServiceTracingStub::ListLocations(
grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const& request) {
auto span = internal::MakeSpanGrpc(
"google.cloud.location.Locations", "ListLocations");
auto scope = opentelemetry::trace::Scope(span);
internal::InjectTraceContext(context, *propagator_);
return internal::EndSpan(
context, *span, child_->ListLocations(context, options, request));
}

StatusOr<google::cloud::clouddms::v1::ListMigrationJobsResponse>
DataMigrationServiceTracingStub::ListMigrationJobs(
grpc::ClientContext& context, Options const& options,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ class DataMigrationServiceTracingStub : public DataMigrationServiceStub {
explicit DataMigrationServiceTracingStub(
std::shared_ptr<DataMigrationServiceStub> child);

StatusOr<google::cloud::location::ListLocationsResponse> ListLocations(
grpc::ClientContext& context, Options const& options,
google::cloud::location::ListLocationsRequest const& request) override;

StatusOr<google::cloud::clouddms::v1::ListMigrationJobsResponse>
ListMigrationJobs(grpc::ClientContext& context, Options const& options,
google::cloud::clouddms::v1::ListMigrationJobsRequest const&
Expand Down
Loading