diff options
Diffstat (limited to 'src')
6 files changed, 22 insertions, 10 deletions
diff --git a/src/buildtool/main/main.cpp b/src/buildtool/main/main.cpp index 10fde879..7ea42821 100644 --- a/src/buildtool/main/main.cpp +++ b/src/buildtool/main/main.cpp @@ -901,6 +901,7 @@ auto main(int argc, char* argv[]) -> int { return serve_server->Run(*serve_config, &local_context, + &remote_context, serve, serve_apis, op_exponent, diff --git a/src/buildtool/serve_api/serve_service/TARGETS b/src/buildtool/serve_api/serve_service/TARGETS index 44ee4427..71f4c574 100644 --- a/src/buildtool/serve_api/serve_service/TARGETS +++ b/src/buildtool/serve_api/serve_service/TARGETS @@ -56,6 +56,7 @@ , ["src/buildtool/execution_api/common", "api_bundle"] , ["src/buildtool/execution_api/execution_service", "operation_cache"] , ["src/buildtool/execution_api/local", "context"] + , ["src/buildtool/execution_api/remote", "context"] ] , "stage": ["src", "buildtool", "serve_api", "serve_service"] , "private-deps": @@ -90,6 +91,7 @@ , ["src/buildtool/execution_api/common", "common"] , ["src/buildtool/execution_api/local", "context"] , ["src/buildtool/execution_api/remote", "config"] + , ["src/buildtool/execution_api/remote", "context"] , ["src/buildtool/serve_api/remote", "config"] , ["src/utils/cpp", "expected"] ] @@ -106,7 +108,6 @@ , ["src/buildtool/build_engine/target_map", "result_map"] , ["src/buildtool/common/remote", "remote_common"] , ["src/buildtool/common/remote", "retry_config"] - , ["src/buildtool/execution_api/remote", "context"] , ["src/buildtool/file_system", "file_system_manager"] , ["src/buildtool/graph_traverser", "graph_traverser"] , ["src/buildtool/logging", "log_level"] diff --git a/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp b/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp index fac31fbe..6c7b4843 100644 --- a/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp +++ b/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp @@ -90,6 +90,7 @@ auto ServeServerImpl::Create(std::optional<std::string> interface, auto ServeServerImpl::Run( RemoteServeConfig const& serve_config, gsl::not_null<LocalContext const*> const& local_context, + gsl::not_null<RemoteContext const*> const& remote_context, std::optional<ServeApi> const& serve, ApiBundle const& apis, std::optional<std::uint8_t> op_exponent, @@ -112,9 +113,12 @@ auto ServeServerImpl::Run( } SourceTreeService sts{&serve_config, local_context, &apis}; - TargetService ts{ - &serve_config, local_context, &apis, serve ? &*serve : nullptr}; - ConfigurationService cs{&apis.remote_config}; + TargetService ts{&serve_config, + local_context, + remote_context, + &apis, + serve ? &*serve : nullptr}; + ConfigurationService cs{remote_context->exec_config}; grpc::ServerBuilder builder; @@ -142,7 +146,8 @@ auto ServeServerImpl::Run( // check authentication credentials; currently only TLS/SSL is supported std::shared_ptr<grpc::ServerCredentials> creds; - if (const auto* tls_auth = std::get_if<Auth::TLS>(&apis.auth.method); + if (const auto* tls_auth = + std::get_if<Auth::TLS>(&remote_context->auth->method); tls_auth != nullptr) { auto tls_opts = grpc::SslServerCredentialsOptions{}; diff --git a/src/buildtool/serve_api/serve_service/serve_server_implementation.hpp b/src/buildtool/serve_api/serve_service/serve_server_implementation.hpp index 4f12ea68..4e169696 100644 --- a/src/buildtool/serve_api/serve_service/serve_server_implementation.hpp +++ b/src/buildtool/serve_api/serve_service/serve_server_implementation.hpp @@ -22,6 +22,7 @@ #include "gsl/gsl" #include "src/buildtool/execution_api/common/api_bundle.hpp" #include "src/buildtool/execution_api/local/context.hpp" +#include "src/buildtool/execution_api/remote/context.hpp" #include "src/buildtool/logging/logger.hpp" #include "src/buildtool/serve_api/remote/config.hpp" #include "src/buildtool/serve_api/remote/serve_api.hpp" @@ -51,6 +52,7 @@ class ServeServerImpl final { /// just execute (i.e., start remote execution services with same interface) auto Run(RemoteServeConfig const& serve_config, gsl::not_null<LocalContext const*> const& local_context, + gsl::not_null<RemoteContext const*> const& remote_context, std::optional<ServeApi> const& serve, ApiBundle const& apis, std::optional<std::uint8_t> op_exponent, diff --git a/src/buildtool/serve_api/serve_service/target.cpp b/src/buildtool/serve_api/serve_service/target.cpp index 16cc37a4..af6de69f 100644 --- a/src/buildtool/serve_api/serve_service/target.cpp +++ b/src/buildtool/serve_api/serve_service/target.cpp @@ -28,7 +28,6 @@ #include "src/buildtool/common/remote/retry_config.hpp" #include "src/buildtool/common/repository_config.hpp" #include "src/buildtool/common/statistics.hpp" -#include "src/buildtool/execution_api/remote/context.hpp" #include "src/buildtool/file_system/file_system_manager.hpp" #include "src/buildtool/file_system/object_type.hpp" #include "src/buildtool/graph_traverser/graph_traverser.hpp" @@ -142,9 +141,9 @@ auto TargetService::CreateRemoteExecutionConfig( } // the remote and cache addresses are kept from the stored ApiBundle return RemoteExecutionConfig{ - .remote_address = apis_.remote_config.remote_address, + .remote_address = remote_context_.exec_config->remote_address, .dispatch = *std::move(res), - .cache_address = apis_.remote_config.cache_address, + .cache_address = remote_context_.exec_config->cache_address, .platform_properties = std::move(platform_properties)}; } @@ -496,8 +495,8 @@ auto TargetService::ServeTarget( // pack the remote context instances to be passed as needed RemoteContext const dispatch_context{ - .auth = &apis_.auth, - .retry_config = &apis_.retry_config, + .auth = remote_context_.auth, + .retry_config = remote_context_.retry_config, .exec_config = &(*remote_config)}; // Use a new ApiBundle that knows about local repository config and diff --git a/src/buildtool/serve_api/serve_service/target.hpp b/src/buildtool/serve_api/serve_service/target.hpp index 89076f05..04459d08 100644 --- a/src/buildtool/serve_api/serve_service/target.hpp +++ b/src/buildtool/serve_api/serve_service/target.hpp @@ -32,6 +32,7 @@ #include "src/buildtool/execution_api/common/execution_api.hpp" #include "src/buildtool/execution_api/local/context.hpp" #include "src/buildtool/execution_api/remote/config.hpp" +#include "src/buildtool/execution_api/remote/context.hpp" #include "src/buildtool/logging/logger.hpp" #include "src/buildtool/serve_api/remote/config.hpp" #include "src/buildtool/serve_api/remote/serve_api.hpp" @@ -43,10 +44,12 @@ class TargetService final : public justbuild::just_serve::Target::Service { explicit TargetService( gsl::not_null<RemoteServeConfig const*> const& serve_config, gsl::not_null<LocalContext const*> const& local_context, + gsl::not_null<RemoteContext const*> const& remote_context, gsl::not_null<ApiBundle const*> const& apis, ServeApi const* serve = nullptr) noexcept : serve_config_{*serve_config}, local_context_{*local_context}, + remote_context_{*remote_context}, apis_{*apis}, serve_{serve} {} @@ -128,6 +131,7 @@ class TargetService final : public justbuild::just_serve::Target::Service { private: RemoteServeConfig const& serve_config_; LocalContext const& local_context_; + RemoteContext const& remote_context_; ApiBundle const& apis_; ServeApi const* const serve_ = nullptr; std::shared_ptr<Logger> logger_{std::make_shared<Logger>("target-service")}; |