diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/execution_api/common/TARGETS | 11 | ||||
-rw-r--r-- | src/buildtool/execution_api/common/create_execution_api.hpp | 44 | ||||
-rw-r--r-- | src/buildtool/graph_traverser/TARGETS | 1 | ||||
-rw-r--r-- | src/buildtool/graph_traverser/graph_traverser.hpp | 14 | ||||
-rw-r--r-- | src/buildtool/serve_api/serve_service/TARGETS | 1 | ||||
-rw-r--r-- | src/buildtool/serve_api/serve_service/source_tree.cpp | 13 | ||||
-rw-r--r-- | src/buildtool/serve_api/serve_service/source_tree.hpp | 5 |
7 files changed, 59 insertions, 30 deletions
diff --git a/src/buildtool/execution_api/common/TARGETS b/src/buildtool/execution_api/common/TARGETS index 4e4bf796..3c580d4d 100644 --- a/src/buildtool/execution_api/common/TARGETS +++ b/src/buildtool/execution_api/common/TARGETS @@ -26,4 +26,15 @@ , "hdrs": ["bytestream_common.hpp"] , "stage": ["src", "buildtool", "execution_api", "common"] } +, "create_execution_api": + { "type": ["@", "rules", "CC", "library"] + , "name": ["create_execution_api"] + , "hdrs": ["create_execution_api.hpp"] + , "stage": ["src", "buildtool", "execution_api", "common"] + , "deps": + [ ["src/buildtool/common/remote", "remote_common"] + , ["src/buildtool/execution_api/local", "local"] + , ["src/buildtool/execution_api/remote", "bazel"] + ] + } } diff --git a/src/buildtool/execution_api/common/create_execution_api.hpp b/src/buildtool/execution_api/common/create_execution_api.hpp new file mode 100644 index 00000000..02fcee4b --- /dev/null +++ b/src/buildtool/execution_api/common/create_execution_api.hpp @@ -0,0 +1,44 @@ +// Copyright 2023 Huawei Cloud Computing Technology Co., Ltd. +// +// 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 +// +// http://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 INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_CREATE_EXECUTION_API_HPP +#define INCLUDED_SRC_BUILDTOOL_EXECUTION_API_COMMON_CREATE_EXECUTION_API_HPP + +#include <memory> +#include <optional> + +#include "gsl/gsl" +#include "src/buildtool/common/remote/remote_common.hpp" +#include "src/buildtool/execution_api/local/local_api.hpp" +#include "src/buildtool/execution_api/remote/bazel/bazel_api.hpp" + +/// \brief Utility function to instantiate either a Local or Bazel Execution +/// API. +/// \param address if provided, a BazelApi is instantiated +/// \param instance_name only used in the construction of the BazelApi object +[[nodiscard]] static inline auto CreateExecutionApi( + std::optional<ServerAddress> const& address, + std::string const& instance_name = "remote-execution") + -> gsl::not_null<IExecutionApi::Ptr> { + if (address) { + ExecutionConfiguration config; + config.skip_cache_lookup = false; + + return std::make_unique<BazelApi>( + instance_name, address->host, address->port, config); + } + return std::make_unique<LocalApi>(); +} + +#endif diff --git a/src/buildtool/graph_traverser/TARGETS b/src/buildtool/graph_traverser/TARGETS index 51b0a653..43238956 100644 --- a/src/buildtool/graph_traverser/TARGETS +++ b/src/buildtool/graph_traverser/TARGETS @@ -9,6 +9,7 @@ , ["src/buildtool/execution_engine/dag", "dag"] , ["src/buildtool/execution_engine/executor", "executor"] , ["src/buildtool/execution_engine/traverser", "traverser"] + , ["src/buildtool/execution_api/common", "create_execution_api"] , ["src/buildtool/execution_api/local", "local"] , ["src/buildtool/execution_api/remote", "bazel"] , ["src/buildtool/execution_api/remote", "config"] diff --git a/src/buildtool/graph_traverser/graph_traverser.hpp b/src/buildtool/graph_traverser/graph_traverser.hpp index 8567395e..02b48a43 100644 --- a/src/buildtool/graph_traverser/graph_traverser.hpp +++ b/src/buildtool/graph_traverser/graph_traverser.hpp @@ -34,6 +34,7 @@ #include "src/buildtool/common/statistics.hpp" #include "src/buildtool/common/tree.hpp" #include "src/buildtool/execution_api/bazel_msg/bazel_blob_container.hpp" +#include "src/buildtool/execution_api/common/create_execution_api.hpp" #include "src/buildtool/execution_api/local/local_api.hpp" #include "src/buildtool/execution_api/remote/bazel/bazel_api.hpp" #include "src/buildtool/execution_api/remote/config.hpp" @@ -270,19 +271,6 @@ class GraphTraverser { std::move(*actions_opt)); } - [[nodiscard]] static auto CreateExecutionApi( - std::optional<ServerAddress> const& address) - -> gsl::not_null<IExecutionApi::Ptr> { - if (address) { - ExecutionConfiguration config; - config.skip_cache_lookup = false; - - return std::make_unique<BazelApi>( - "remote-execution", address->host, address->port, config); - } - return std::make_unique<LocalApi>(); - } - /// \brief Requires for the executor to upload blobs to CAS. In the case any /// of the uploads fails, execution is terminated /// \param[in] blobs blobs to be uploaded diff --git a/src/buildtool/serve_api/serve_service/TARGETS b/src/buildtool/serve_api/serve_service/TARGETS index dae08d35..f3d78414 100644 --- a/src/buildtool/serve_api/serve_service/TARGETS +++ b/src/buildtool/serve_api/serve_service/TARGETS @@ -17,6 +17,7 @@ , ["src/buildtool/common/remote", "remote_common"] , ["src/buildtool/execution_api/common", "common"] , ["src/buildtool/execution_api/remote", "config"] + , ["src/buildtool/execution_api/common", "create_execution_api"] ] , "stage": ["src", "buildtool", "serve_api", "serve_service"] , "private-deps": diff --git a/src/buildtool/serve_api/serve_service/source_tree.cpp b/src/buildtool/serve_api/serve_service/source_tree.cpp index 69a7a607..cb3f6220 100644 --- a/src/buildtool/serve_api/serve_service/source_tree.cpp +++ b/src/buildtool/serve_api/serve_service/source_tree.cpp @@ -24,19 +24,6 @@ #include "src/buildtool/serve_api/remote/config.hpp" #include "src/buildtool/storage/config.hpp" -auto SourceTreeService::CreateExecutionApi( - std::optional<ServerAddress> const& address) - -> gsl::not_null<IExecutionApi::Ptr> { - if (address) { - ExecutionConfiguration config; - config.skip_cache_lookup = false; - - return std::make_unique<BazelApi>( - "remote-execution", address->host, address->port, config); - } - return std::make_unique<LocalApi>(); -} - auto SourceTreeService::GetTreeFromCommit( std::filesystem::path const& repo_path, std::string const& commit, diff --git a/src/buildtool/serve_api/serve_service/source_tree.hpp b/src/buildtool/serve_api/serve_service/source_tree.hpp index 0bdf48b8..089844a1 100644 --- a/src/buildtool/serve_api/serve_service/source_tree.hpp +++ b/src/buildtool/serve_api/serve_service/source_tree.hpp @@ -24,6 +24,7 @@ #include "gsl/gsl" #include "justbuild/just_serve/just_serve.grpc.pb.h" #include "src/buildtool/common/remote/remote_common.hpp" +#include "src/buildtool/execution_api/common/create_execution_api.hpp" #include "src/buildtool/execution_api/common/execution_api.hpp" #include "src/buildtool/execution_api/remote/config.hpp" #include "src/buildtool/logging/logger.hpp" @@ -57,10 +58,6 @@ class SourceTreeService final gsl::not_null<IExecutionApi::Ptr> const local_api_{ CreateExecutionApi(std::nullopt)}; - [[nodiscard]] static auto CreateExecutionApi( - std::optional<ServerAddress> const& address) - -> gsl::not_null<IExecutionApi::Ptr>; - [[nodiscard]] static auto GetTreeFromCommit( std::filesystem::path const& repo_path, std::string const& commit, |