summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/execution_api/common/TARGETS11
-rw-r--r--src/buildtool/execution_api/common/create_execution_api.hpp44
-rw-r--r--src/buildtool/graph_traverser/TARGETS1
-rw-r--r--src/buildtool/graph_traverser/graph_traverser.hpp14
-rw-r--r--src/buildtool/serve_api/serve_service/TARGETS1
-rw-r--r--src/buildtool/serve_api/serve_service/source_tree.cpp13
-rw-r--r--src/buildtool/serve_api/serve_service/source_tree.hpp5
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,