mirror of https://github.com/grpc/grpc-java.git
bazel: Use jarjar to avoid xds deps (#12243)
Avoiding so many deps will allow us to upgrade the protos without being forced to upgrade to protobuf-java 4.x. It also removes the remaining non-bzlmod dependencies. It'd be really easy to get this wrong, so we do two things 1) mirror the gradle configuration as much as possible, as that sees a lot of testing, and 2) run the fake control plane with the _results_ of jarjar. There's lots of classes that we could mess up, but that at least kicks the tires. XdsTestUtils.buildRouteConfiguration() was moved to ControlPlaneRule to stop the unnecessary circular dependency between the classes and to avoid the many dependencies of XdsTestUtils. I'm totally hacking java_grpc_library to improve the dependency situation. Long-term, I think we will stop building Java libraries with Bazel and require users to rely entirely on Maven Central. That seems to be the direction Bazel is going and it will greatly simplify the problems we've seen with protobuf having a single repository for many languages. So while the hack isn't too bad, I hope we won't have to live with it long-term.
This commit is contained in:
parent
42e1829b37
commit
8f09b96899
|
|
@ -102,6 +102,9 @@ jobs:
|
||||||
- name: Run bazel build
|
- name: Run bazel build
|
||||||
run: bazelisk build //... --enable_bzlmod=${{ matrix.bzlmod }}
|
run: bazelisk build //... --enable_bzlmod=${{ matrix.bzlmod }}
|
||||||
|
|
||||||
|
- name: Run bazel test
|
||||||
|
run: bazelisk test //... --enable_bzlmod=${{ matrix.bzlmod }}
|
||||||
|
|
||||||
- name: Run example bazel build
|
- name: Run example bazel build
|
||||||
run: bazelisk build //... --enable_bzlmod=${{ matrix.bzlmod }}
|
run: bazelisk build //... --enable_bzlmod=${{ matrix.bzlmod }}
|
||||||
working-directory: ./examples
|
working-directory: ./examples
|
||||||
|
|
|
||||||
26
MODULE.bazel
26
MODULE.bazel
|
|
@ -46,36 +46,16 @@ IO_GRPC_GRPC_JAVA_ARTIFACTS = [
|
||||||
]
|
]
|
||||||
# GRPC_DEPS_END
|
# GRPC_DEPS_END
|
||||||
|
|
||||||
|
bazel_dep(name = "bazel_jar_jar", version = "0.1.7")
|
||||||
bazel_dep(name = "bazel_skylib", version = "1.7.1")
|
bazel_dep(name = "bazel_skylib", version = "1.7.1")
|
||||||
bazel_dep(name = "googleapis", repo_name = "com_google_googleapis", version = "0.0.0-20240326-1c8d509c5")
|
bazel_dep(name = "googleapis", repo_name = "com_google_googleapis", version = "0.0.0-20240326-1c8d509c5")
|
||||||
|
|
||||||
# CEL Spec may be removed when cncf/xds MODULE is no longer using protobuf 27.x
|
|
||||||
bazel_dep(name = "cel-spec", repo_name = "dev_cel", version = "0.15.0")
|
|
||||||
bazel_dep(name = "grpc", repo_name = "com_github_grpc_grpc", version = "1.56.3.bcr.1")
|
|
||||||
bazel_dep(name = "grpc-proto", repo_name = "io_grpc_grpc_proto", version = "0.0.0-20240627-ec30f58")
|
bazel_dep(name = "grpc-proto", repo_name = "io_grpc_grpc_proto", version = "0.0.0-20240627-ec30f58")
|
||||||
bazel_dep(name = "protobuf", repo_name = "com_google_protobuf", version = "23.1")
|
bazel_dep(name = "protobuf", repo_name = "com_google_protobuf", version = "23.1")
|
||||||
bazel_dep(name = "rules_cc", version = "0.0.9")
|
bazel_dep(name = "rules_cc", version = "0.0.9")
|
||||||
bazel_dep(name = "rules_java", version = "5.3.5")
|
bazel_dep(name = "rules_java", version = "5.3.5")
|
||||||
bazel_dep(name = "rules_go", repo_name = "io_bazel_rules_go", version = "0.46.0")
|
|
||||||
bazel_dep(name = "rules_jvm_external", version = "6.0")
|
bazel_dep(name = "rules_jvm_external", version = "6.0")
|
||||||
bazel_dep(name = "rules_proto", version = "5.3.0-21.7")
|
bazel_dep(name = "rules_proto", version = "5.3.0-21.7")
|
||||||
|
|
||||||
non_module_deps = use_extension("//:repositories.bzl", "grpc_java_repositories_extension")
|
|
||||||
|
|
||||||
use_repo(
|
|
||||||
non_module_deps,
|
|
||||||
"com_github_cncf_xds",
|
|
||||||
"envoy_api",
|
|
||||||
)
|
|
||||||
|
|
||||||
grpc_repo_deps_ext = use_extension("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_repo_deps_ext")
|
|
||||||
|
|
||||||
use_repo(
|
|
||||||
grpc_repo_deps_ext,
|
|
||||||
"com_envoyproxy_protoc_gen_validate",
|
|
||||||
"opencensus_proto",
|
|
||||||
)
|
|
||||||
|
|
||||||
maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
|
maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
|
||||||
|
|
||||||
maven.install(
|
maven.install(
|
||||||
|
|
@ -202,7 +182,3 @@ maven.override(
|
||||||
coordinates = "io.grpc:grpc-util",
|
coordinates = "io.grpc:grpc-util",
|
||||||
target = "@io_grpc_grpc_java//util",
|
target = "@io_grpc_grpc_java//util",
|
||||||
)
|
)
|
||||||
|
|
||||||
switched_rules = use_extension("@com_google_googleapis//:extensions.bzl", "switched_rules")
|
|
||||||
|
|
||||||
switched_rules.use_languages(java = True)
|
|
||||||
|
|
|
||||||
|
|
@ -22,20 +22,19 @@ load("//:repositories.bzl", "grpc_java_repositories")
|
||||||
|
|
||||||
grpc_java_repositories()
|
grpc_java_repositories()
|
||||||
|
|
||||||
|
load("@bazel_jar_jar//:jar_jar.bzl", "jar_jar_repositories")
|
||||||
|
|
||||||
|
jar_jar_repositories()
|
||||||
|
|
||||||
load("@com_google_protobuf//:protobuf_deps.bzl", "PROTOBUF_MAVEN_ARTIFACTS")
|
load("@com_google_protobuf//:protobuf_deps.bzl", "PROTOBUF_MAVEN_ARTIFACTS")
|
||||||
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
|
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
|
||||||
|
|
||||||
protobuf_deps()
|
protobuf_deps()
|
||||||
|
|
||||||
load("@envoy_api//bazel:repositories.bzl", "api_dependencies")
|
|
||||||
|
|
||||||
api_dependencies()
|
|
||||||
|
|
||||||
load("@com_google_googleapis//:repository_rules.bzl", "switched_rules_by_language")
|
load("@com_google_googleapis//:repository_rules.bzl", "switched_rules_by_language")
|
||||||
|
|
||||||
switched_rules_by_language(
|
switched_rules_by_language(
|
||||||
name = "com_google_googleapis_imports",
|
name = "com_google_googleapis_imports",
|
||||||
java = True,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
maven_install(
|
maven_install(
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ cc_binary(
|
||||||
|
|
||||||
java_library(
|
java_library(
|
||||||
name = "java_grpc_library_deps__do_not_reference",
|
name = "java_grpc_library_deps__do_not_reference",
|
||||||
|
visibility = ["//xds:__pkg__"],
|
||||||
exports = [
|
exports = [
|
||||||
"//api",
|
"//api",
|
||||||
"//protobuf",
|
"//protobuf",
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,6 @@ local_path_override(
|
||||||
path = "..",
|
path = "..",
|
||||||
)
|
)
|
||||||
|
|
||||||
switched_rules = use_extension("@com_google_googleapis//:extensions.bzl", "switched_rules")
|
|
||||||
|
|
||||||
switched_rules.use_languages(java = True)
|
|
||||||
|
|
||||||
maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
|
maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
|
||||||
|
|
||||||
use_repo(maven, "maven")
|
use_repo(maven, "maven")
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,10 @@ load("@io_grpc_grpc_java//:repositories.bzl", "grpc_java_repositories")
|
||||||
|
|
||||||
grpc_java_repositories()
|
grpc_java_repositories()
|
||||||
|
|
||||||
|
load("@bazel_jar_jar//:jar_jar.bzl", "jar_jar_repositories")
|
||||||
|
|
||||||
|
jar_jar_repositories()
|
||||||
|
|
||||||
# Protobuf now requires C++14 or higher, which requires Bazel configuration
|
# Protobuf now requires C++14 or higher, which requires Bazel configuration
|
||||||
# outside the WORKSPACE. See .bazelrc in this directory.
|
# outside the WORKSPACE. See .bazelrc in this directory.
|
||||||
load("@com_google_protobuf//:protobuf_deps.bzl", "PROTOBUF_MAVEN_ARTIFACTS")
|
load("@com_google_protobuf//:protobuf_deps.bzl", "PROTOBUF_MAVEN_ARTIFACTS")
|
||||||
|
|
@ -35,15 +39,10 @@ load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
|
||||||
|
|
||||||
protobuf_deps()
|
protobuf_deps()
|
||||||
|
|
||||||
load("@envoy_api//bazel:repositories.bzl", "api_dependencies")
|
|
||||||
|
|
||||||
api_dependencies()
|
|
||||||
|
|
||||||
load("@com_google_googleapis//:repository_rules.bzl", "switched_rules_by_language")
|
load("@com_google_googleapis//:repository_rules.bzl", "switched_rules_by_language")
|
||||||
|
|
||||||
switched_rules_by_language(
|
switched_rules_by_language(
|
||||||
name = "com_google_googleapis_imports",
|
name = "com_google_googleapis_imports",
|
||||||
java = True,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
maven_install(
|
maven_install(
|
||||||
|
|
|
||||||
|
|
@ -147,6 +147,33 @@ _java_grpc_library = rule(
|
||||||
implementation = _java_rpc_library_impl,
|
implementation = _java_rpc_library_impl,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# A copy of _java_grpc_library, except with a neverlink=1 _toolchain
|
||||||
|
INTERNAL_java_grpc_library_for_xds = rule(
|
||||||
|
attrs = {
|
||||||
|
"srcs": attr.label_list(
|
||||||
|
mandatory = True,
|
||||||
|
allow_empty = False,
|
||||||
|
providers = [ProtoInfo],
|
||||||
|
),
|
||||||
|
"deps": attr.label_list(
|
||||||
|
mandatory = True,
|
||||||
|
allow_empty = False,
|
||||||
|
providers = [JavaInfo],
|
||||||
|
),
|
||||||
|
"_toolchain": attr.label(
|
||||||
|
default = Label("//xds:java_grpc_library_toolchain"),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
toolchains = ["@bazel_tools//tools/jdk:toolchain_type"],
|
||||||
|
fragments = ["java"],
|
||||||
|
outputs = {
|
||||||
|
"jar": "lib%{name}.jar",
|
||||||
|
"srcjar": "lib%{name}-src.jar",
|
||||||
|
},
|
||||||
|
provides = [JavaInfo],
|
||||||
|
implementation = _java_rpc_library_impl,
|
||||||
|
)
|
||||||
|
|
||||||
_java_lite_grpc_library = rule(
|
_java_lite_grpc_library = rule(
|
||||||
attrs = {
|
attrs = {
|
||||||
"srcs": attr.label_list(
|
"srcs": attr.label_list(
|
||||||
|
|
|
||||||
|
|
@ -87,38 +87,11 @@ IO_GRPC_GRPC_JAVA_OVERRIDE_TARGETS = {
|
||||||
"io.grpc:grpc-util": "@io_grpc_grpc_java//util",
|
"io.grpc:grpc-util": "@io_grpc_grpc_java//util",
|
||||||
}
|
}
|
||||||
|
|
||||||
def grpc_java_repositories(bzlmod = False):
|
def grpc_java_repositories():
|
||||||
"""Imports dependencies for grpc-java."""
|
"""Imports dependencies for grpc-java."""
|
||||||
if not bzlmod and not native.existing_rule("dev_cel"):
|
if not native.existing_rule("com_google_protobuf"):
|
||||||
http_archive(
|
|
||||||
name = "dev_cel",
|
|
||||||
strip_prefix = "cel-spec-0.15.0",
|
|
||||||
sha256 = "3ee09eb69dbe77722e9dee23dc48dc2cd9f765869fcf5ffb1226587c81791a0b",
|
|
||||||
urls = [
|
|
||||||
"https://github.com/google/cel-spec/archive/refs/tags/v0.15.0.tar.gz",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
if not native.existing_rule("com_github_cncf_xds"):
|
|
||||||
http_archive(
|
|
||||||
name = "com_github_cncf_xds",
|
|
||||||
strip_prefix = "xds-2ac532fd44436293585084f8d94c6bdb17835af0",
|
|
||||||
sha256 = "790c4c83b6950bb602fec221f6a529d9f368cdc8852aae7d2592d0d04b015f37",
|
|
||||||
urls = [
|
|
||||||
"https://github.com/cncf/xds/archive/2ac532fd44436293585084f8d94c6bdb17835af0.tar.gz",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
if not bzlmod and not native.existing_rule("com_github_grpc_grpc"):
|
|
||||||
http_archive(
|
|
||||||
name = "com_github_grpc_grpc",
|
|
||||||
strip_prefix = "grpc-1.46.0",
|
|
||||||
sha256 = "67423a4cd706ce16a88d1549297023f0f9f0d695a96dd684adc21e67b021f9bc",
|
|
||||||
urls = [
|
|
||||||
"https://github.com/grpc/grpc/archive/v1.46.0.tar.gz",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
if not bzlmod and not native.existing_rule("com_google_protobuf"):
|
|
||||||
com_google_protobuf()
|
com_google_protobuf()
|
||||||
if not bzlmod and not native.existing_rule("com_google_googleapis"):
|
if not native.existing_rule("com_google_googleapis"):
|
||||||
http_archive(
|
http_archive(
|
||||||
name = "com_google_googleapis",
|
name = "com_google_googleapis",
|
||||||
sha256 = "49930468563dd48283e8301e8d4e71436bf6d27ac27c235224cc1a098710835d",
|
sha256 = "49930468563dd48283e8301e8d4e71436bf6d27ac27c235224cc1a098710835d",
|
||||||
|
|
@ -127,25 +100,14 @@ def grpc_java_repositories(bzlmod = False):
|
||||||
"https://github.com/googleapis/googleapis/archive/ca1372c6d7bcb199638ebfdb40d2b2660bab7b88.tar.gz",
|
"https://github.com/googleapis/googleapis/archive/ca1372c6d7bcb199638ebfdb40d2b2660bab7b88.tar.gz",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
if not bzlmod and not native.existing_rule("io_bazel_rules_go"):
|
|
||||||
http_archive(
|
|
||||||
name = "io_bazel_rules_go",
|
|
||||||
sha256 = "ab21448cef298740765f33a7f5acee0607203e4ea321219f2a4c85a6e0fb0a27",
|
|
||||||
urls = [
|
|
||||||
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.32.0/rules_go-v0.32.0.zip",
|
|
||||||
"https://github.com/bazelbuild/rules_go/releases/download/v0.32.0/rules_go-v0.32.0.zip",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
if not native.existing_rule("io_grpc_grpc_proto"):
|
if not native.existing_rule("io_grpc_grpc_proto"):
|
||||||
io_grpc_grpc_proto()
|
io_grpc_grpc_proto()
|
||||||
if not native.existing_rule("envoy_api"):
|
if not native.existing_rule("bazel_jar_jar"):
|
||||||
http_archive(
|
http_archive(
|
||||||
name = "envoy_api",
|
name = "bazel_jar_jar",
|
||||||
sha256 = "ecf71817233eba19cc8b4ee14e126ffd5838065d5b5a92b2506258a42ac55199",
|
sha256 = "3117f913c732142a795551f530d02c9157b9ea895e6b2de0fbb5af54f03040a5",
|
||||||
strip_prefix = "data-plane-api-0bc95493c5e88b7b07e62758d23b39341813a827",
|
strip_prefix = "bazel_jar_jar-0.1.6",
|
||||||
urls = [
|
url = "https://github.com/bazeltools/bazel_jar_jar/releases/download/v0.1.6/bazel_jar_jar-v0.1.6.tar.gz",
|
||||||
"https://github.com/envoyproxy/data-plane-api/archive/0bc95493c5e88b7b07e62758d23b39341813a827.tar.gz",
|
|
||||||
],
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def com_google_protobuf():
|
def com_google_protobuf():
|
||||||
|
|
@ -166,8 +128,3 @@ def io_grpc_grpc_proto():
|
||||||
strip_prefix = "grpc-proto-4f245d272a28a680606c0739753506880cf33b5f",
|
strip_prefix = "grpc-proto-4f245d272a28a680606c0739753506880cf33b5f",
|
||||||
urls = ["https://github.com/grpc/grpc-proto/archive/4f245d272a28a680606c0739753506880cf33b5f.zip"],
|
urls = ["https://github.com/grpc/grpc-proto/archive/4f245d272a28a680606c0739753506880cf33b5f.zip"],
|
||||||
)
|
)
|
||||||
|
|
||||||
def _grpc_java_repositories_extension(_):
|
|
||||||
grpc_java_repositories(bzlmod = True)
|
|
||||||
|
|
||||||
grpc_java_repositories_extension = module_extension(implementation = _grpc_java_repositories_extension)
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
load("//:java_grpc_library.bzl", "java_grpc_library")
|
||||||
|
|
||||||
|
proto_library(
|
||||||
|
name = "simpleservice_proto",
|
||||||
|
srcs = ["src/main/proto/io/grpc/testing/protobuf/simpleservice.proto"],
|
||||||
|
strip_import_prefix = "src/main/proto/",
|
||||||
|
)
|
||||||
|
|
||||||
|
java_proto_library(
|
||||||
|
name = "simpleservice_java_proto",
|
||||||
|
visibility = ["//xds:__pkg__"],
|
||||||
|
deps = [":simpleservice_proto"],
|
||||||
|
)
|
||||||
|
|
||||||
|
java_grpc_library(
|
||||||
|
name = "simpleservice_java_grpc",
|
||||||
|
srcs = [":simpleservice_proto"],
|
||||||
|
visibility = ["//xds:__pkg__"],
|
||||||
|
deps = [":simpleservice_java_proto"],
|
||||||
|
)
|
||||||
371
xds/BUILD.bazel
371
xds/BUILD.bazel
|
|
@ -1,5 +1,6 @@
|
||||||
|
load("@bazel_jar_jar//:jar_jar.bzl", "jar_jar")
|
||||||
load("@rules_jvm_external//:defs.bzl", "artifact")
|
load("@rules_jvm_external//:defs.bzl", "artifact")
|
||||||
load("//:java_grpc_library.bzl", "java_grpc_library")
|
load("//:java_grpc_library.bzl", "INTERNAL_java_grpc_library_for_xds", "java_grpc_library", "java_rpc_toolchain")
|
||||||
|
|
||||||
# Mirrors the dependencies included in the artifact on Maven Central for usage
|
# Mirrors the dependencies included in the artifact on Maven Central for usage
|
||||||
# with maven_install's override_targets. Should only be used as a dep for
|
# with maven_install's override_targets. Should only be used as a dep for
|
||||||
|
|
@ -13,25 +14,11 @@ java_library(
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Ordinary deps for :xds
|
||||||
java_library(
|
java_library(
|
||||||
name = "xds",
|
name = "xds_deps_depend",
|
||||||
srcs = glob(
|
exports = [
|
||||||
[
|
|
||||||
"src/main/java/**/*.java",
|
|
||||||
"third_party/zero-allocation-hashing/main/java/**/*.java",
|
|
||||||
],
|
|
||||||
exclude = ["src/main/java/io/grpc/xds/orca/**"],
|
|
||||||
),
|
|
||||||
resources = glob([
|
|
||||||
"src/main/resources/**",
|
|
||||||
]),
|
|
||||||
visibility = ["//visibility:public"],
|
|
||||||
deps = [
|
|
||||||
":envoy_service_discovery_v3_java_grpc",
|
|
||||||
":envoy_service_load_stats_v3_java_grpc",
|
|
||||||
":envoy_service_status_v3_java_grpc",
|
|
||||||
":orca",
|
":orca",
|
||||||
":xds_protos_java",
|
|
||||||
"//:auto_value_annotations",
|
"//:auto_value_annotations",
|
||||||
"//alts",
|
"//alts",
|
||||||
"//api",
|
"//api",
|
||||||
|
|
@ -43,7 +30,6 @@ java_library(
|
||||||
"//services:metrics_internal",
|
"//services:metrics_internal",
|
||||||
"//stub",
|
"//stub",
|
||||||
"//util",
|
"//util",
|
||||||
"@com_google_googleapis//google/rpc:rpc_java_proto",
|
|
||||||
"@com_google_protobuf//:protobuf_java",
|
"@com_google_protobuf//:protobuf_java",
|
||||||
"@com_google_protobuf//:protobuf_java_util",
|
"@com_google_protobuf//:protobuf_java_util",
|
||||||
"@maven//:com_google_auth_google_auth_library_oauth2_http",
|
"@maven//:com_google_auth_google_auth_library_oauth2_http",
|
||||||
|
|
@ -58,70 +44,89 @@ java_library(
|
||||||
artifact("io.netty:netty-handler"),
|
artifact("io.netty:netty-handler"),
|
||||||
artifact("io.netty:netty-transport"),
|
artifact("io.netty:netty-transport"),
|
||||||
],
|
],
|
||||||
)
|
runtime_deps = [
|
||||||
|
"//compiler:java_grpc_library_deps__do_not_reference",
|
||||||
java_proto_library(
|
|
||||||
name = "xds_protos_java",
|
|
||||||
deps = [
|
|
||||||
"@com_github_cncf_xds//udpa/type/v1:pkg",
|
|
||||||
"@com_github_cncf_xds//xds/type/v3:pkg",
|
|
||||||
"@envoy_api//envoy/admin/v3:pkg",
|
|
||||||
"@envoy_api//envoy/config/cluster/v3:pkg",
|
|
||||||
"@envoy_api//envoy/config/core/v3:pkg",
|
|
||||||
"@envoy_api//envoy/config/endpoint/v3:pkg",
|
|
||||||
"@envoy_api//envoy/config/listener/v3:pkg",
|
|
||||||
"@envoy_api//envoy/config/rbac/v3:pkg",
|
|
||||||
"@envoy_api//envoy/config/route/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/clusters/aggregate/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/filters/common/fault/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/filters/http/fault/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/filters/http/gcp_authn/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/filters/http/rbac/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/filters/http/router/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/load_balancing_policies/least_request/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/load_balancing_policies/pick_first/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/load_balancing_policies/ring_hash/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/load_balancing_policies/round_robin/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/load_balancing_policies/wrr_locality/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/transport_sockets/http_11_proxy/v3:pkg",
|
|
||||||
"@envoy_api//envoy/extensions/transport_sockets/tls/v3:pkg",
|
|
||||||
"@envoy_api//envoy/service/discovery/v3:pkg",
|
|
||||||
"@envoy_api//envoy/service/load_stats/v3:pkg",
|
|
||||||
"@envoy_api//envoy/service/status/v3:pkg",
|
|
||||||
"@envoy_api//envoy/type/matcher/v3:pkg",
|
|
||||||
"@envoy_api//envoy/type/v3:pkg",
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
java_grpc_library(
|
java_library(
|
||||||
name = "envoy_service_discovery_v3_java_grpc",
|
name = "xds_deps_depend_neverlink",
|
||||||
srcs = ["@envoy_api//envoy/service/discovery/v3:pkg"],
|
neverlink = 1,
|
||||||
deps = [":xds_protos_java"],
|
exports = [":xds_deps_depend"],
|
||||||
)
|
)
|
||||||
|
|
||||||
java_grpc_library(
|
# Deps to be combined into the :xds jar itself
|
||||||
name = "envoy_service_load_stats_v3_java_grpc",
|
java_library(
|
||||||
srcs = ["@envoy_api//envoy/service/load_stats/v3:pkg"],
|
name = "xds_deps_embed",
|
||||||
deps = [":xds_protos_java"],
|
exports = [
|
||||||
|
":envoy_java_grpc",
|
||||||
|
":envoy_java_proto",
|
||||||
|
":googleapis_rpc_java_proto",
|
||||||
|
":xds_java_proto",
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
java_grpc_library(
|
java_binary(
|
||||||
name = "envoy_service_status_v3_java_grpc",
|
name = "xds_notjarjar",
|
||||||
srcs = ["@envoy_api//envoy/service/status/v3:pkg"],
|
srcs = glob(
|
||||||
deps = [":xds_protos_java"],
|
[
|
||||||
|
"src/main/java/**/*.java",
|
||||||
|
"third_party/zero-allocation-hashing/main/java/**/*.java",
|
||||||
|
],
|
||||||
|
exclude = ["src/main/java/io/grpc/xds/orca/**"],
|
||||||
|
),
|
||||||
|
main_class = "unused",
|
||||||
|
resources = glob([
|
||||||
|
"src/main/resources/**",
|
||||||
|
]),
|
||||||
|
deps = [
|
||||||
|
# Do not add additional dependencies here; add them to one of these two deps instead
|
||||||
|
":xds_deps_depend_neverlink",
|
||||||
|
":xds_deps_embed",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
JAR_JAR_RULES = [
|
||||||
|
"zap com.google.protobuf.**", # Drop codegen dep
|
||||||
|
# Keep in sync with build.gradle's shadowJar
|
||||||
|
"rule com.github.udpa.** io.grpc.xds.shaded.com.github.udpa.@1",
|
||||||
|
"rule com.github.xds.** io.grpc.xds.shaded.com.github.xds.@1",
|
||||||
|
"rule com.google.api.expr.** io.grpc.xds.shaded.com.google.api.expr.@1",
|
||||||
|
"rule com.google.security.** io.grpc.xds.shaded.com.google.security.@1",
|
||||||
|
"rule dev.cel.expr.** io.grpc.xds.shaded.dev.cel.expr.@1",
|
||||||
|
"rule envoy.annotations.** io.grpc.xds.shaded.envoy.annotations.@1",
|
||||||
|
"rule io.envoyproxy.** io.grpc.xds.shaded.io.envoyproxy.@1",
|
||||||
|
"rule udpa.annotations.** io.grpc.xds.shaded.udpa.annotations.@1",
|
||||||
|
"rule xds.annotations.** io.grpc.xds.shaded.xds.annotations.@1",
|
||||||
|
]
|
||||||
|
|
||||||
|
jar_jar(
|
||||||
|
name = "xds_jarjar",
|
||||||
|
inline_rules = JAR_JAR_RULES,
|
||||||
|
input_jar = ":xds_notjarjar_deploy.jar",
|
||||||
)
|
)
|
||||||
|
|
||||||
java_library(
|
java_library(
|
||||||
name = "orca",
|
name = "xds",
|
||||||
srcs = glob([
|
|
||||||
"src/main/java/io/grpc/xds/orca/*.java",
|
|
||||||
]),
|
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
|
exports = [":xds_jarjar"],
|
||||||
|
runtime_deps = [":xds_deps_depend"],
|
||||||
|
)
|
||||||
|
|
||||||
|
java_proto_library(
|
||||||
|
name = "googleapis_rpc_java_proto",
|
||||||
deps = [
|
deps = [
|
||||||
":orca_protos_java",
|
"@com_google_googleapis//google/rpc:code_proto",
|
||||||
":xds_service_orca_v3_java_grpc",
|
"@com_google_googleapis//google/rpc:status_proto",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
# Ordinary deps for :orca
|
||||||
|
java_library(
|
||||||
|
name = "orca_deps_depend",
|
||||||
|
exports = [
|
||||||
|
":xds_orca_java_grpc",
|
||||||
|
":xds_orca_java_proto",
|
||||||
"//api",
|
"//api",
|
||||||
"//context",
|
"//context",
|
||||||
"//core:internal",
|
"//core:internal",
|
||||||
|
|
@ -136,16 +141,222 @@ java_library(
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
java_proto_library(
|
java_library(
|
||||||
name = "orca_protos_java",
|
name = "orca_deps_depend_neverlink",
|
||||||
deps = [
|
neverlink = 1,
|
||||||
"@com_github_cncf_xds//xds/data/orca/v3:pkg",
|
exports = [":orca_deps_depend"],
|
||||||
"@com_github_cncf_xds//xds/service/orca/v3:pkg",
|
)
|
||||||
|
|
||||||
|
# Deps to be combined into the :orca jar itself
|
||||||
|
java_library(
|
||||||
|
name = "orca_deps_embed",
|
||||||
|
exports = [
|
||||||
|
":xds_orca_java_grpc",
|
||||||
|
":xds_orca_java_proto",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
java_grpc_library(
|
java_binary(
|
||||||
name = "xds_service_orca_v3_java_grpc",
|
name = "orca_notjarjar",
|
||||||
srcs = ["@com_github_cncf_xds//xds/service/orca/v3:pkg"],
|
srcs = glob([
|
||||||
deps = [":orca_protos_java"],
|
"src/main/java/io/grpc/xds/orca/*.java",
|
||||||
|
]),
|
||||||
|
main_class = "unused",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
# Do not add additional dependencies here; add them to one of these two deps instead
|
||||||
|
":orca_deps_depend_neverlink",
|
||||||
|
":orca_deps_embed",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
jar_jar(
|
||||||
|
name = "orca_jarjar",
|
||||||
|
inline_rules = JAR_JAR_RULES,
|
||||||
|
input_jar = ":orca_notjarjar_deploy.jar",
|
||||||
|
)
|
||||||
|
|
||||||
|
java_library(
|
||||||
|
name = "orca",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
exports = [":orca_jarjar"],
|
||||||
|
runtime_deps = [":orca_deps_depend"],
|
||||||
|
)
|
||||||
|
|
||||||
|
java_proto_library(
|
||||||
|
name = "orca_java_proto",
|
||||||
|
deps = [":xds_proto"],
|
||||||
|
)
|
||||||
|
|
||||||
|
java_grpc_library(
|
||||||
|
name = "orca_java_grpc",
|
||||||
|
srcs = [":xds_proto"],
|
||||||
|
deps = [":orca_java_proto"],
|
||||||
|
)
|
||||||
|
|
||||||
|
proto_library(
|
||||||
|
name = "cel_spec_proto",
|
||||||
|
srcs = glob(["third_party/cel-spec/src/main/proto/**/*.proto"]),
|
||||||
|
strip_import_prefix = "third_party/cel-spec/src/main/proto/",
|
||||||
|
deps = [
|
||||||
|
"@com_google_protobuf//:duration_proto",
|
||||||
|
"@com_google_protobuf//:empty_proto",
|
||||||
|
"@com_google_protobuf//:struct_proto",
|
||||||
|
"@com_google_protobuf//:timestamp_proto",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
proto_library(
|
||||||
|
name = "envoy_proto",
|
||||||
|
srcs = glob(["third_party/envoy/src/main/proto/**/*.proto"]),
|
||||||
|
strip_import_prefix = "third_party/envoy/src/main/proto/",
|
||||||
|
deps = [
|
||||||
|
":googleapis_proto",
|
||||||
|
":protoc_gen_validate_proto",
|
||||||
|
":xds_proto",
|
||||||
|
"@com_google_googleapis//google/api:annotations_proto",
|
||||||
|
"@com_google_googleapis//google/rpc:status_proto",
|
||||||
|
"@com_google_protobuf//:any_proto",
|
||||||
|
"@com_google_protobuf//:descriptor_proto",
|
||||||
|
"@com_google_protobuf//:duration_proto",
|
||||||
|
"@com_google_protobuf//:empty_proto",
|
||||||
|
"@com_google_protobuf//:struct_proto",
|
||||||
|
"@com_google_protobuf//:timestamp_proto",
|
||||||
|
"@com_google_protobuf//:wrappers_proto",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
java_proto_library(
|
||||||
|
name = "envoy_java_proto",
|
||||||
|
deps = [":envoy_proto"],
|
||||||
|
)
|
||||||
|
|
||||||
|
INTERNAL_java_grpc_library_for_xds(
|
||||||
|
name = "envoy_java_grpc",
|
||||||
|
srcs = [":envoy_proto"],
|
||||||
|
deps = [":envoy_java_proto"],
|
||||||
|
)
|
||||||
|
|
||||||
|
proto_library(
|
||||||
|
name = "googleapis_proto",
|
||||||
|
srcs = glob(["third_party/googleapis/src/main/proto/**/*.proto"]),
|
||||||
|
strip_import_prefix = "third_party/googleapis/src/main/proto/",
|
||||||
|
deps = [
|
||||||
|
"@com_google_protobuf//:duration_proto",
|
||||||
|
"@com_google_protobuf//:empty_proto",
|
||||||
|
"@com_google_protobuf//:struct_proto",
|
||||||
|
"@com_google_protobuf//:timestamp_proto",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
proto_library(
|
||||||
|
name = "protoc_gen_validate_proto",
|
||||||
|
srcs = glob(["third_party/protoc-gen-validate/src/main/proto/**/*.proto"]),
|
||||||
|
strip_import_prefix = "third_party/protoc-gen-validate/src/main/proto/",
|
||||||
|
deps = [
|
||||||
|
"@com_google_protobuf//:descriptor_proto",
|
||||||
|
"@com_google_protobuf//:duration_proto",
|
||||||
|
"@com_google_protobuf//:timestamp_proto",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
proto_library(
|
||||||
|
name = "xds_proto",
|
||||||
|
srcs = glob(
|
||||||
|
["third_party/xds/src/main/proto/**/*.proto"],
|
||||||
|
exclude = [
|
||||||
|
"third_party/xds/src/main/proto/xds/data/orca/v3/*.proto",
|
||||||
|
"third_party/xds/src/main/proto/xds/service/orca/v3/*.proto",
|
||||||
|
],
|
||||||
|
),
|
||||||
|
strip_import_prefix = "third_party/xds/src/main/proto/",
|
||||||
|
deps = [
|
||||||
|
":cel_spec_proto",
|
||||||
|
":googleapis_proto",
|
||||||
|
":protoc_gen_validate_proto",
|
||||||
|
"@com_google_protobuf//:any_proto",
|
||||||
|
"@com_google_protobuf//:descriptor_proto",
|
||||||
|
"@com_google_protobuf//:duration_proto",
|
||||||
|
"@com_google_protobuf//:struct_proto",
|
||||||
|
"@com_google_protobuf//:wrappers_proto",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
java_proto_library(
|
||||||
|
name = "xds_java_proto",
|
||||||
|
deps = [":xds_proto"],
|
||||||
|
)
|
||||||
|
|
||||||
|
proto_library(
|
||||||
|
name = "xds_orca_proto",
|
||||||
|
srcs = glob([
|
||||||
|
"third_party/xds/src/main/proto/xds/data/orca/v3/*.proto",
|
||||||
|
"third_party/xds/src/main/proto/xds/service/orca/v3/*.proto",
|
||||||
|
]),
|
||||||
|
strip_import_prefix = "third_party/xds/src/main/proto/",
|
||||||
|
deps = [
|
||||||
|
":protoc_gen_validate_proto",
|
||||||
|
"@com_google_protobuf//:duration_proto",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
java_proto_library(
|
||||||
|
name = "xds_orca_java_proto",
|
||||||
|
deps = [":xds_orca_proto"],
|
||||||
|
)
|
||||||
|
|
||||||
|
java_grpc_library(
|
||||||
|
name = "xds_orca_java_grpc",
|
||||||
|
srcs = [":xds_orca_proto"],
|
||||||
|
deps = [":xds_orca_java_proto"],
|
||||||
|
)
|
||||||
|
|
||||||
|
java_rpc_toolchain(
|
||||||
|
name = "java_grpc_library_toolchain",
|
||||||
|
plugin = "//compiler:grpc_java_plugin",
|
||||||
|
runtime = [":java_grpc_library_deps"],
|
||||||
|
)
|
||||||
|
|
||||||
|
java_library(
|
||||||
|
name = "java_grpc_library_deps",
|
||||||
|
neverlink = 1,
|
||||||
|
exports = ["//compiler:java_grpc_library_deps__do_not_reference"],
|
||||||
|
)
|
||||||
|
|
||||||
|
java_library(
|
||||||
|
name = "testlib",
|
||||||
|
testonly = 1,
|
||||||
|
srcs = [
|
||||||
|
"src/test/java/io/grpc/xds/ControlPlaneRule.java",
|
||||||
|
"src/test/java/io/grpc/xds/DataPlaneRule.java",
|
||||||
|
"src/test/java/io/grpc/xds/FakeControlPlaneXdsIntegrationTest.java",
|
||||||
|
"src/test/java/io/grpc/xds/MetadataLoadBalancerProvider.java",
|
||||||
|
"src/test/java/io/grpc/xds/XdsTestControlPlaneService.java",
|
||||||
|
"src/test/java/io/grpc/xds/XdsTestLoadReportingService.java",
|
||||||
|
],
|
||||||
|
deps = [
|
||||||
|
":envoy_java_grpc",
|
||||||
|
":envoy_java_proto",
|
||||||
|
":xds",
|
||||||
|
":xds_java_proto",
|
||||||
|
"//api",
|
||||||
|
"//core:internal",
|
||||||
|
"//stub",
|
||||||
|
"//testing",
|
||||||
|
"//testing-proto:simpleservice_java_grpc",
|
||||||
|
"//testing-proto:simpleservice_java_proto",
|
||||||
|
"//util",
|
||||||
|
"@com_google_protobuf//java/core",
|
||||||
|
"@maven//:com_google_code_findbugs_jsr305",
|
||||||
|
"@maven//:com_google_guava_guava",
|
||||||
|
"@maven//:com_google_truth_truth",
|
||||||
|
"@maven//:junit_junit",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
java_test(
|
||||||
|
name = "FakeControlPlaneXdsIntegrationTest",
|
||||||
|
size = "small",
|
||||||
|
test_class = "io.grpc.xds.FakeControlPlaneXdsIntegrationTest",
|
||||||
|
runtime_deps = [":testlib"],
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,11 @@ sourceSets {
|
||||||
srcDir "${projectDir}/third_party/zero-allocation-hashing/main/java"
|
srcDir "${projectDir}/third_party/zero-allocation-hashing/main/java"
|
||||||
}
|
}
|
||||||
proto {
|
proto {
|
||||||
|
srcDir 'third_party/cel-spec/src/main/proto'
|
||||||
srcDir 'third_party/envoy/src/main/proto'
|
srcDir 'third_party/envoy/src/main/proto'
|
||||||
|
srcDir 'third_party/googleapis/src/main/proto'
|
||||||
srcDir 'third_party/protoc-gen-validate/src/main/proto'
|
srcDir 'third_party/protoc-gen-validate/src/main/proto'
|
||||||
srcDir 'third_party/xds/src/main/proto'
|
srcDir 'third_party/xds/src/main/proto'
|
||||||
srcDir 'third_party/cel-spec/src/main/proto'
|
|
||||||
srcDir 'third_party/googleapis/src/main/proto'
|
|
||||||
srcDir 'third_party/istio/src/main/proto'
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
main {
|
main {
|
||||||
|
|
@ -186,6 +185,7 @@ tasks.named("shadowJar").configure {
|
||||||
include(project(':grpc-xds'))
|
include(project(':grpc-xds'))
|
||||||
}
|
}
|
||||||
// Relocated packages commonly need exclusions in jacocoTestReport and javadoc
|
// Relocated packages commonly need exclusions in jacocoTestReport and javadoc
|
||||||
|
// Keep in sync with BUILD.bazel's JAR_JAR_RULES
|
||||||
relocate 'com.github.udpa', "${prefixName}.shaded.com.github.udpa"
|
relocate 'com.github.udpa', "${prefixName}.shaded.com.github.udpa"
|
||||||
relocate 'com.github.xds', "${prefixName}.shaded.com.github.xds"
|
relocate 'com.github.xds', "${prefixName}.shaded.com.github.xds"
|
||||||
relocate 'com.google.api.expr', "${prefixName}.shaded.com.google.api.expr"
|
relocate 'com.google.api.expr', "${prefixName}.shaded.com.google.api.expr"
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import static io.grpc.xds.XdsTestControlPlaneService.ADS_TYPE_URL_RDS;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.protobuf.Any;
|
import com.google.protobuf.Any;
|
||||||
|
import com.google.protobuf.BoolValue;
|
||||||
import com.google.protobuf.Message;
|
import com.google.protobuf.Message;
|
||||||
import com.google.protobuf.UInt32Value;
|
import com.google.protobuf.UInt32Value;
|
||||||
import io.envoyproxy.envoy.config.cluster.v3.Cluster;
|
import io.envoyproxy.envoy.config.cluster.v3.Cluster;
|
||||||
|
|
@ -44,6 +45,7 @@ import io.envoyproxy.envoy.config.listener.v3.FilterChainMatch;
|
||||||
import io.envoyproxy.envoy.config.listener.v3.Listener;
|
import io.envoyproxy.envoy.config.listener.v3.Listener;
|
||||||
import io.envoyproxy.envoy.config.route.v3.NonForwardingAction;
|
import io.envoyproxy.envoy.config.route.v3.NonForwardingAction;
|
||||||
import io.envoyproxy.envoy.config.route.v3.Route;
|
import io.envoyproxy.envoy.config.route.v3.Route;
|
||||||
|
import io.envoyproxy.envoy.config.route.v3.RouteAction;
|
||||||
import io.envoyproxy.envoy.config.route.v3.RouteConfiguration;
|
import io.envoyproxy.envoy.config.route.v3.RouteConfiguration;
|
||||||
import io.envoyproxy.envoy.config.route.v3.RouteMatch;
|
import io.envoyproxy.envoy.config.route.v3.RouteMatch;
|
||||||
import io.envoyproxy.envoy.config.route.v3.VirtualHost;
|
import io.envoyproxy.envoy.config.route.v3.VirtualHost;
|
||||||
|
|
@ -237,7 +239,25 @@ public class ControlPlaneRule extends TestWatcher {
|
||||||
* Builds a new default RDS configuration.
|
* Builds a new default RDS configuration.
|
||||||
*/
|
*/
|
||||||
static RouteConfiguration buildRouteConfiguration(String authority) {
|
static RouteConfiguration buildRouteConfiguration(String authority) {
|
||||||
return XdsTestUtils.buildRouteConfiguration(authority, RDS_NAME, CLUSTER_NAME);
|
return buildRouteConfiguration(authority, RDS_NAME, CLUSTER_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
static RouteConfiguration buildRouteConfiguration(String authority, String rdsName,
|
||||||
|
String clusterName) {
|
||||||
|
io.envoyproxy.envoy.config.route.v3.VirtualHost.Builder vhBuilder =
|
||||||
|
io.envoyproxy.envoy.config.route.v3.VirtualHost.newBuilder()
|
||||||
|
.setName(rdsName)
|
||||||
|
.addDomains(authority)
|
||||||
|
.addRoutes(
|
||||||
|
Route.newBuilder()
|
||||||
|
.setMatch(
|
||||||
|
RouteMatch.newBuilder().setPrefix("/").build())
|
||||||
|
.setRoute(
|
||||||
|
RouteAction.newBuilder().setCluster(clusterName)
|
||||||
|
.setAutoHostRewrite(BoolValue.newBuilder().setValue(true).build())
|
||||||
|
.build()));
|
||||||
|
io.envoyproxy.envoy.config.route.v3.VirtualHost virtualHost = vhBuilder.build();
|
||||||
|
return RouteConfiguration.newBuilder().setName(rdsName).addVirtualHosts(virtualHost).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@ import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.util.concurrent.MoreExecutors;
|
import com.google.common.util.concurrent.MoreExecutors;
|
||||||
import com.google.protobuf.Any;
|
import com.google.protobuf.Any;
|
||||||
import com.google.protobuf.BoolValue;
|
|
||||||
import com.google.protobuf.Message;
|
import com.google.protobuf.Message;
|
||||||
import com.google.protobuf.util.Durations;
|
import com.google.protobuf.util.Durations;
|
||||||
import io.envoyproxy.envoy.config.cluster.v3.Cluster;
|
import io.envoyproxy.envoy.config.cluster.v3.Cluster;
|
||||||
|
|
@ -38,10 +37,7 @@ import io.envoyproxy.envoy.config.endpoint.v3.ClusterLoadAssignment;
|
||||||
import io.envoyproxy.envoy.config.endpoint.v3.ClusterStats;
|
import io.envoyproxy.envoy.config.endpoint.v3.ClusterStats;
|
||||||
import io.envoyproxy.envoy.config.listener.v3.ApiListener;
|
import io.envoyproxy.envoy.config.listener.v3.ApiListener;
|
||||||
import io.envoyproxy.envoy.config.listener.v3.Listener;
|
import io.envoyproxy.envoy.config.listener.v3.Listener;
|
||||||
import io.envoyproxy.envoy.config.route.v3.Route;
|
|
||||||
import io.envoyproxy.envoy.config.route.v3.RouteAction;
|
|
||||||
import io.envoyproxy.envoy.config.route.v3.RouteConfiguration;
|
import io.envoyproxy.envoy.config.route.v3.RouteConfiguration;
|
||||||
import io.envoyproxy.envoy.config.route.v3.RouteMatch;
|
|
||||||
import io.envoyproxy.envoy.extensions.clusters.aggregate.v3.ClusterConfig;
|
import io.envoyproxy.envoy.extensions.clusters.aggregate.v3.ClusterConfig;
|
||||||
import io.envoyproxy.envoy.extensions.filters.http.router.v3.Router;
|
import io.envoyproxy.envoy.extensions.filters.http.router.v3.Router;
|
||||||
import io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter;
|
import io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter;
|
||||||
|
|
@ -306,20 +302,7 @@ public class XdsTestUtils {
|
||||||
|
|
||||||
static RouteConfiguration buildRouteConfiguration(String authority, String rdsName,
|
static RouteConfiguration buildRouteConfiguration(String authority, String rdsName,
|
||||||
String clusterName) {
|
String clusterName) {
|
||||||
io.envoyproxy.envoy.config.route.v3.VirtualHost.Builder vhBuilder =
|
return ControlPlaneRule.buildRouteConfiguration(authority, rdsName, clusterName);
|
||||||
io.envoyproxy.envoy.config.route.v3.VirtualHost.newBuilder()
|
|
||||||
.setName(rdsName)
|
|
||||||
.addDomains(authority)
|
|
||||||
.addRoutes(
|
|
||||||
Route.newBuilder()
|
|
||||||
.setMatch(
|
|
||||||
RouteMatch.newBuilder().setPrefix("/").build())
|
|
||||||
.setRoute(
|
|
||||||
RouteAction.newBuilder().setCluster(clusterName)
|
|
||||||
.setAutoHostRewrite(BoolValue.newBuilder().setValue(true).build())
|
|
||||||
.build()));
|
|
||||||
io.envoyproxy.envoy.config.route.v3.VirtualHost virtualHost = vhBuilder.build();
|
|
||||||
return RouteConfiguration.newBuilder().setName(rdsName).addVirtualHosts(virtualHost).build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Cluster buildAggCluster(String name, List<String> childNames) {
|
static Cluster buildAggCluster(String name, List<String> childNames) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue