From e6266d00dce94f7c3d0dd39ea8e19489c59821a9 Mon Sep 17 00:00:00 2001 From: Kunjan Patel Date: Tue, 10 Dec 2024 21:42:04 +0000 Subject: [PATCH 1/7] Add support for generating python proto code Signed-off-by: Kunjan Patel Signed-off-by: Kunjan Patel --- .gitignore | 1 + MODULE.bazel | 2 +- ci/azure-pipelines.yml | 2 +- ci/check.sh | 2 +- go/udpa/annotations/migrate.pb.go | 2 +- go/udpa/annotations/security.pb.go | 2 +- go/udpa/annotations/sensitive.pb.go | 2 +- go/udpa/annotations/status.pb.go | 2 +- go/udpa/annotations/versioning.pb.go | 2 +- go/udpa/data/orca/v1/orca_load_report.pb.go | 2 +- go/udpa/service/orca/v1/orca.pb.go | 2 +- go/udpa/service/orca/v1/orca_grpc.pb.go | 2 +- go/udpa/type/v1/typed_struct.pb.go | 2 +- go/xds/annotations/v3/migrate.pb.go | 2 +- go/xds/annotations/v3/security.pb.go | 2 +- go/xds/annotations/v3/sensitive.pb.go | 2 +- go/xds/annotations/v3/status.pb.go | 2 +- go/xds/annotations/v3/versioning.pb.go | 2 +- go/xds/core/v3/authority.pb.go | 2 +- go/xds/core/v3/cidr.pb.go | 2 +- go/xds/core/v3/collection_entry.pb.go | 2 +- go/xds/core/v3/context_params.pb.go | 2 +- go/xds/core/v3/extension.pb.go | 2 +- go/xds/core/v3/resource.pb.go | 2 +- go/xds/core/v3/resource_locator.pb.go | 2 +- go/xds/core/v3/resource_name.pb.go | 2 +- go/xds/data/orca/v3/orca_load_report.pb.go | 2 +- go/xds/service/orca/v3/orca.pb.go | 2 +- go/xds/service/orca/v3/orca_grpc.pb.go | 2 +- go/xds/type/matcher/v3/cel.pb.go | 2 +- go/xds/type/matcher/v3/domain.pb.go | 2 +- go/xds/type/matcher/v3/http_inputs.pb.go | 2 +- go/xds/type/matcher/v3/ip.pb.go | 2 +- go/xds/type/matcher/v3/matcher.pb.go | 2 +- go/xds/type/matcher/v3/range.pb.go | 2 +- go/xds/type/matcher/v3/regex.pb.go | 2 +- go/xds/type/matcher/v3/string.pb.go | 2 +- go/xds/type/v3/cel.pb.go | 2 +- go/xds/type/v3/range.pb.go | 2 +- go/xds/type/v3/typed_struct.pb.go | 2 +- python/LICENSE | 21 +++++ python/__init__.py | 0 python/pyproject.toml | 19 ++++ python/setup.py | 12 +++ python/udpa/__init__.py | 0 python/udpa/annotations/__init__.py | 0 python/udpa/annotations/migrate_pb2.py | 42 +++++++++ python/udpa/annotations/security_pb2.py | 39 +++++++++ python/udpa/annotations/sensitive_pb2.py | 36 ++++++++ python/udpa/annotations/status_pb2.py | 40 +++++++++ python/udpa/annotations/versioning_pb2.py | 38 ++++++++ python/udpa/data/__init__.py | 0 python/udpa/data/orca/__init__.py | 0 python/udpa/data/orca/v1/__init__.py | 0 .../udpa/data/orca/v1/orca_load_report_pb2.py | 52 +++++++++++ python/udpa/service/__init__.py | 0 python/udpa/service/orca/__init__.py | 0 python/udpa/service/orca/v1/__init__.py | 0 python/udpa/service/orca/v1/orca_pb2.py | 41 +++++++++ python/udpa/type/__init__.py | 0 python/udpa/type/v1/__init__.py | 0 python/udpa/type/v1/typed_struct_pb2.py | 38 ++++++++ python/validate/validate_pb2.py | 86 +++++++++++++++++++ python/xds/__init__.py | 0 python/xds/annotations/__init__.py | 0 python/xds/annotations/v3/__init__.py | 0 python/xds/annotations/v3/migrate_pb2.py | 42 +++++++++ python/xds/annotations/v3/security_pb2.py | 39 +++++++++ python/xds/annotations/v3/sensitive_pb2.py | 36 ++++++++ python/xds/annotations/v3/status_pb2.py | 46 ++++++++++ python/xds/annotations/v3/versioning_pb2.py | 38 ++++++++ python/xds/core/__init__.py | 0 python/xds/core/v3/__init__.py | 0 python/xds/core/v3/authority_pb2.py | 41 +++++++++ python/xds/core/v3/cidr_pb2.py | 44 ++++++++++ python/xds/core/v3/collection_entry_pb2.py | 47 ++++++++++ python/xds/core/v3/context_params_pb2.py | 42 +++++++++ python/xds/core/v3/extension_pb2.py | 43 ++++++++++ python/xds/core/v3/resource_locator_pb2.py | 52 +++++++++++ python/xds/core/v3/resource_name_pb2.py | 42 +++++++++ python/xds/core/v3/resource_pb2.py | 40 +++++++++ python/xds/data/__init__.py | 0 python/xds/data/orca/__init__.py | 0 python/xds/data/orca/v3/__init__.py | 0 .../xds/data/orca/v3/orca_load_report_pb2.py | 64 ++++++++++++++ python/xds/service/__init__.py | 0 python/xds/service/orca/__init__.py | 0 python/xds/service/orca/v3/__init__.py | 0 python/xds/service/orca/v3/orca_pb2.py | 41 +++++++++ python/xds/type/__init__.py | 0 python/xds/type/matcher/__init__.py | 0 python/xds/type/matcher/v3/__init__.py | 0 python/xds/type/matcher/v3/cel_pb2.py | 41 +++++++++ python/xds/type/matcher/v3/domain_pb2.py | 44 ++++++++++ python/xds/type/matcher/v3/http_inputs_pb2.py | 37 ++++++++ python/xds/type/matcher/v3/ip_pb2.py | 45 ++++++++++ python/xds/type/matcher/v3/matcher_pb2.py | 82 ++++++++++++++++++ python/xds/type/matcher/v3/range_pb2.py | 56 ++++++++++++ python/xds/type/matcher/v3/regex_pb2.py | 46 ++++++++++ python/xds/type/matcher/v3/string_pb2.py | 54 ++++++++++++ python/xds/type/v3/__init__.py | 0 python/xds/type/v3/cel_pb2.py | 52 +++++++++++ python/xds/type/v3/range_pb2.py | 41 +++++++++ python/xds/type/v3/typed_struct_pb2.py | 38 ++++++++ tools/generate_go_protobuf.py | 36 -------- tools/generate_protobuf.py | 51 +++++++++++ 106 files changed, 1748 insertions(+), 75 deletions(-) create mode 100644 python/LICENSE create mode 100644 python/__init__.py create mode 100644 python/pyproject.toml create mode 100644 python/setup.py create mode 100644 python/udpa/__init__.py create mode 100644 python/udpa/annotations/__init__.py create mode 100644 python/udpa/annotations/migrate_pb2.py create mode 100644 python/udpa/annotations/security_pb2.py create mode 100644 python/udpa/annotations/sensitive_pb2.py create mode 100644 python/udpa/annotations/status_pb2.py create mode 100644 python/udpa/annotations/versioning_pb2.py create mode 100644 python/udpa/data/__init__.py create mode 100644 python/udpa/data/orca/__init__.py create mode 100644 python/udpa/data/orca/v1/__init__.py create mode 100644 python/udpa/data/orca/v1/orca_load_report_pb2.py create mode 100644 python/udpa/service/__init__.py create mode 100644 python/udpa/service/orca/__init__.py create mode 100644 python/udpa/service/orca/v1/__init__.py create mode 100644 python/udpa/service/orca/v1/orca_pb2.py create mode 100644 python/udpa/type/__init__.py create mode 100644 python/udpa/type/v1/__init__.py create mode 100644 python/udpa/type/v1/typed_struct_pb2.py create mode 100644 python/validate/validate_pb2.py create mode 100644 python/xds/__init__.py create mode 100644 python/xds/annotations/__init__.py create mode 100644 python/xds/annotations/v3/__init__.py create mode 100644 python/xds/annotations/v3/migrate_pb2.py create mode 100644 python/xds/annotations/v3/security_pb2.py create mode 100644 python/xds/annotations/v3/sensitive_pb2.py create mode 100644 python/xds/annotations/v3/status_pb2.py create mode 100644 python/xds/annotations/v3/versioning_pb2.py create mode 100644 python/xds/core/__init__.py create mode 100644 python/xds/core/v3/__init__.py create mode 100644 python/xds/core/v3/authority_pb2.py create mode 100644 python/xds/core/v3/cidr_pb2.py create mode 100644 python/xds/core/v3/collection_entry_pb2.py create mode 100644 python/xds/core/v3/context_params_pb2.py create mode 100644 python/xds/core/v3/extension_pb2.py create mode 100644 python/xds/core/v3/resource_locator_pb2.py create mode 100644 python/xds/core/v3/resource_name_pb2.py create mode 100644 python/xds/core/v3/resource_pb2.py create mode 100644 python/xds/data/__init__.py create mode 100644 python/xds/data/orca/__init__.py create mode 100644 python/xds/data/orca/v3/__init__.py create mode 100644 python/xds/data/orca/v3/orca_load_report_pb2.py create mode 100644 python/xds/service/__init__.py create mode 100644 python/xds/service/orca/__init__.py create mode 100644 python/xds/service/orca/v3/__init__.py create mode 100644 python/xds/service/orca/v3/orca_pb2.py create mode 100644 python/xds/type/__init__.py create mode 100644 python/xds/type/matcher/__init__.py create mode 100644 python/xds/type/matcher/v3/__init__.py create mode 100644 python/xds/type/matcher/v3/cel_pb2.py create mode 100644 python/xds/type/matcher/v3/domain_pb2.py create mode 100644 python/xds/type/matcher/v3/http_inputs_pb2.py create mode 100644 python/xds/type/matcher/v3/ip_pb2.py create mode 100644 python/xds/type/matcher/v3/matcher_pb2.py create mode 100644 python/xds/type/matcher/v3/range_pb2.py create mode 100644 python/xds/type/matcher/v3/regex_pb2.py create mode 100644 python/xds/type/matcher/v3/string_pb2.py create mode 100644 python/xds/type/v3/__init__.py create mode 100644 python/xds/type/v3/cel_pb2.py create mode 100644 python/xds/type/v3/range_pb2.py create mode 100644 python/xds/type/v3/typed_struct_pb2.py delete mode 100755 tools/generate_go_protobuf.py create mode 100755 tools/generate_protobuf.py diff --git a/.gitignore b/.gitignore index 0d4fed27..0d9fbad4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ bazel-* MODULE.bazel.lock +__pycache__/ \ No newline at end of file diff --git a/MODULE.bazel b/MODULE.bazel index feb144cb..0ffcde23 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -8,7 +8,7 @@ bazel_dep(name = "cel-spec", version = "0.15.0", repo_name = "dev_cel") bazel_dep(name = "gazelle", version = "0.36.0", repo_name = "bazel_gazelle") bazel_dep(name = "googleapis", version = "0.0.0-20240326-1c8d509c5", repo_name = "com_google_googleapis") bazel_dep(name = "grpc", version = "1.56.3.bcr.1", repo_name = "com_github_grpc_grpc") -bazel_dep(name = "protobuf", version = "27.0-rc2", repo_name = "com_google_protobuf") +bazel_dep(name = "protobuf", version = "29.1", repo_name = "com_google_protobuf") bazel_dep(name = "protoc-gen-validate", version = "1.0.4", repo_name = "com_envoyproxy_protoc_gen_validate") bazel_dep(name = "re2", version = "2024-05-01", repo_name = "com_googlesource_code_re2") bazel_dep(name = "rules_go", version = "0.46.0", repo_name = "io_bazel_rules_go") diff --git a/ci/azure-pipelines.yml b/ci/azure-pipelines.yml index a98e81ac..eea5e4db 100644 --- a/ci/azure-pipelines.yml +++ b/ci/azure-pipelines.yml @@ -21,7 +21,7 @@ jobs: env: TEST_TMPDIR: $(Agent.TempDirectory)/tmp - - bash: tools/generate_go_protobuf.py && test -z "$(git status --porcelain)" + - bash: tools/generate_protobuf.py && test -z "$(git status --porcelain)" env: TEST_TMPDIR: $(Agent.TempDirectory)/tmp diff --git a/ci/check.sh b/ci/check.sh index f6faf04e..5f0302f9 100755 --- a/ci/check.sh +++ b/ci/check.sh @@ -6,7 +6,7 @@ bazel test --config=ci //... rm -rf go/xds go/udpa -tools/generate_go_protobuf.py +tools/generate_protobuf.py git add go/xds go/udpa diff --git a/go/udpa/annotations/migrate.pb.go b/go/udpa/annotations/migrate.pb.go index 0281b3ee..3c751b6c 100644 --- a/go/udpa/annotations/migrate.pb.go +++ b/go/udpa/annotations/migrate.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: udpa/annotations/migrate.proto package annotations diff --git a/go/udpa/annotations/security.pb.go b/go/udpa/annotations/security.pb.go index cf858bd9..7c833991 100644 --- a/go/udpa/annotations/security.pb.go +++ b/go/udpa/annotations/security.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: udpa/annotations/security.proto package annotations diff --git a/go/udpa/annotations/sensitive.pb.go b/go/udpa/annotations/sensitive.pb.go index 2d5c78dc..e2b1a59c 100644 --- a/go/udpa/annotations/sensitive.pb.go +++ b/go/udpa/annotations/sensitive.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: udpa/annotations/sensitive.proto package annotations diff --git a/go/udpa/annotations/status.pb.go b/go/udpa/annotations/status.pb.go index c96818b1..cf629f75 100644 --- a/go/udpa/annotations/status.pb.go +++ b/go/udpa/annotations/status.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: udpa/annotations/status.proto package annotations diff --git a/go/udpa/annotations/versioning.pb.go b/go/udpa/annotations/versioning.pb.go index b3ab9e34..8bd950f6 100644 --- a/go/udpa/annotations/versioning.pb.go +++ b/go/udpa/annotations/versioning.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: udpa/annotations/versioning.proto package annotations diff --git a/go/udpa/data/orca/v1/orca_load_report.pb.go b/go/udpa/data/orca/v1/orca_load_report.pb.go index ddbd122f..fc171f18 100644 --- a/go/udpa/data/orca/v1/orca_load_report.pb.go +++ b/go/udpa/data/orca/v1/orca_load_report.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: udpa/data/orca/v1/orca_load_report.proto package v1 diff --git a/go/udpa/service/orca/v1/orca.pb.go b/go/udpa/service/orca/v1/orca.pb.go index a5066c0f..08aed5c5 100644 --- a/go/udpa/service/orca/v1/orca.pb.go +++ b/go/udpa/service/orca/v1/orca.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: udpa/service/orca/v1/orca.proto package v1 diff --git a/go/udpa/service/orca/v1/orca_grpc.pb.go b/go/udpa/service/orca/v1/orca_grpc.pb.go index 618e08f2..cffc1624 100644 --- a/go/udpa/service/orca/v1/orca_grpc.pb.go +++ b/go/udpa/service/orca/v1/orca_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v5.27.0--rc2 +// - protoc v5.29.1 // source: udpa/service/orca/v1/orca.proto package v1 diff --git a/go/udpa/type/v1/typed_struct.pb.go b/go/udpa/type/v1/typed_struct.pb.go index e8f23f78..8eb3b7b2 100644 --- a/go/udpa/type/v1/typed_struct.pb.go +++ b/go/udpa/type/v1/typed_struct.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: udpa/type/v1/typed_struct.proto package v1 diff --git a/go/xds/annotations/v3/migrate.pb.go b/go/xds/annotations/v3/migrate.pb.go index 705a71e8..5211b83c 100644 --- a/go/xds/annotations/v3/migrate.pb.go +++ b/go/xds/annotations/v3/migrate.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/annotations/v3/migrate.proto package v3 diff --git a/go/xds/annotations/v3/security.pb.go b/go/xds/annotations/v3/security.pb.go index 0278e516..14df890c 100644 --- a/go/xds/annotations/v3/security.pb.go +++ b/go/xds/annotations/v3/security.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/annotations/v3/security.proto package v3 diff --git a/go/xds/annotations/v3/sensitive.pb.go b/go/xds/annotations/v3/sensitive.pb.go index 57161aab..042b66bf 100644 --- a/go/xds/annotations/v3/sensitive.pb.go +++ b/go/xds/annotations/v3/sensitive.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/annotations/v3/sensitive.proto package v3 diff --git a/go/xds/annotations/v3/status.pb.go b/go/xds/annotations/v3/status.pb.go index 255d109f..5d5975ff 100644 --- a/go/xds/annotations/v3/status.pb.go +++ b/go/xds/annotations/v3/status.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/annotations/v3/status.proto package v3 diff --git a/go/xds/annotations/v3/versioning.pb.go b/go/xds/annotations/v3/versioning.pb.go index 2de032f1..97edd769 100644 --- a/go/xds/annotations/v3/versioning.pb.go +++ b/go/xds/annotations/v3/versioning.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/annotations/v3/versioning.proto package v3 diff --git a/go/xds/core/v3/authority.pb.go b/go/xds/core/v3/authority.pb.go index 3058286d..035b8c01 100644 --- a/go/xds/core/v3/authority.pb.go +++ b/go/xds/core/v3/authority.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/core/v3/authority.proto package v3 diff --git a/go/xds/core/v3/cidr.pb.go b/go/xds/core/v3/cidr.pb.go index 0e339b58..58c27d7d 100644 --- a/go/xds/core/v3/cidr.pb.go +++ b/go/xds/core/v3/cidr.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/core/v3/cidr.proto package v3 diff --git a/go/xds/core/v3/collection_entry.pb.go b/go/xds/core/v3/collection_entry.pb.go index 0d45b961..f0b4c12f 100644 --- a/go/xds/core/v3/collection_entry.pb.go +++ b/go/xds/core/v3/collection_entry.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/core/v3/collection_entry.proto package v3 diff --git a/go/xds/core/v3/context_params.pb.go b/go/xds/core/v3/context_params.pb.go index 714ab436..3e75637e 100644 --- a/go/xds/core/v3/context_params.pb.go +++ b/go/xds/core/v3/context_params.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/core/v3/context_params.proto package v3 diff --git a/go/xds/core/v3/extension.pb.go b/go/xds/core/v3/extension.pb.go index be4ea10c..7183e114 100644 --- a/go/xds/core/v3/extension.pb.go +++ b/go/xds/core/v3/extension.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/core/v3/extension.proto package v3 diff --git a/go/xds/core/v3/resource.pb.go b/go/xds/core/v3/resource.pb.go index 641e3411..ced3bc3f 100644 --- a/go/xds/core/v3/resource.pb.go +++ b/go/xds/core/v3/resource.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/core/v3/resource.proto package v3 diff --git a/go/xds/core/v3/resource_locator.pb.go b/go/xds/core/v3/resource_locator.pb.go index 3f99d4be..f469c18c 100644 --- a/go/xds/core/v3/resource_locator.pb.go +++ b/go/xds/core/v3/resource_locator.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/core/v3/resource_locator.proto package v3 diff --git a/go/xds/core/v3/resource_name.pb.go b/go/xds/core/v3/resource_name.pb.go index 3d42818b..65f65fdb 100644 --- a/go/xds/core/v3/resource_name.pb.go +++ b/go/xds/core/v3/resource_name.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/core/v3/resource_name.proto package v3 diff --git a/go/xds/data/orca/v3/orca_load_report.pb.go b/go/xds/data/orca/v3/orca_load_report.pb.go index 74899339..f929ca63 100644 --- a/go/xds/data/orca/v3/orca_load_report.pb.go +++ b/go/xds/data/orca/v3/orca_load_report.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/data/orca/v3/orca_load_report.proto package v3 diff --git a/go/xds/service/orca/v3/orca.pb.go b/go/xds/service/orca/v3/orca.pb.go index 463f4ed3..32e4a37b 100644 --- a/go/xds/service/orca/v3/orca.pb.go +++ b/go/xds/service/orca/v3/orca.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/service/orca/v3/orca.proto package v3 diff --git a/go/xds/service/orca/v3/orca_grpc.pb.go b/go/xds/service/orca/v3/orca_grpc.pb.go index 6cecac14..8a92439e 100644 --- a/go/xds/service/orca/v3/orca_grpc.pb.go +++ b/go/xds/service/orca/v3/orca_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v5.27.0--rc2 +// - protoc v5.29.1 // source: xds/service/orca/v3/orca.proto package v3 diff --git a/go/xds/type/matcher/v3/cel.pb.go b/go/xds/type/matcher/v3/cel.pb.go index 7299227a..1bd4aaf6 100644 --- a/go/xds/type/matcher/v3/cel.pb.go +++ b/go/xds/type/matcher/v3/cel.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/type/matcher/v3/cel.proto package v3 diff --git a/go/xds/type/matcher/v3/domain.pb.go b/go/xds/type/matcher/v3/domain.pb.go index 5f72c8d1..3053b35f 100644 --- a/go/xds/type/matcher/v3/domain.pb.go +++ b/go/xds/type/matcher/v3/domain.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/type/matcher/v3/domain.proto package v3 diff --git a/go/xds/type/matcher/v3/http_inputs.pb.go b/go/xds/type/matcher/v3/http_inputs.pb.go index 4393bb7e..eedcacec 100644 --- a/go/xds/type/matcher/v3/http_inputs.pb.go +++ b/go/xds/type/matcher/v3/http_inputs.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/type/matcher/v3/http_inputs.proto package v3 diff --git a/go/xds/type/matcher/v3/ip.pb.go b/go/xds/type/matcher/v3/ip.pb.go index fdb65994..6facd7ae 100644 --- a/go/xds/type/matcher/v3/ip.pb.go +++ b/go/xds/type/matcher/v3/ip.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/type/matcher/v3/ip.proto package v3 diff --git a/go/xds/type/matcher/v3/matcher.pb.go b/go/xds/type/matcher/v3/matcher.pb.go index d94b03b5..ac8dd4f1 100644 --- a/go/xds/type/matcher/v3/matcher.pb.go +++ b/go/xds/type/matcher/v3/matcher.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/type/matcher/v3/matcher.proto package v3 diff --git a/go/xds/type/matcher/v3/range.pb.go b/go/xds/type/matcher/v3/range.pb.go index 2861768d..bc811ecb 100644 --- a/go/xds/type/matcher/v3/range.pb.go +++ b/go/xds/type/matcher/v3/range.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/type/matcher/v3/range.proto package v3 diff --git a/go/xds/type/matcher/v3/regex.pb.go b/go/xds/type/matcher/v3/regex.pb.go index 3dcf303a..c02ec2a9 100644 --- a/go/xds/type/matcher/v3/regex.pb.go +++ b/go/xds/type/matcher/v3/regex.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/type/matcher/v3/regex.proto package v3 diff --git a/go/xds/type/matcher/v3/string.pb.go b/go/xds/type/matcher/v3/string.pb.go index f9067918..79b70bcb 100644 --- a/go/xds/type/matcher/v3/string.pb.go +++ b/go/xds/type/matcher/v3/string.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/type/matcher/v3/string.proto package v3 diff --git a/go/xds/type/v3/cel.pb.go b/go/xds/type/v3/cel.pb.go index c7d42d4a..e298ffb0 100644 --- a/go/xds/type/v3/cel.pb.go +++ b/go/xds/type/v3/cel.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/type/v3/cel.proto package v3 diff --git a/go/xds/type/v3/range.pb.go b/go/xds/type/v3/range.pb.go index ca9d3e1b..c6f8bb9b 100644 --- a/go/xds/type/v3/range.pb.go +++ b/go/xds/type/v3/range.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/type/v3/range.proto package v3 diff --git a/go/xds/type/v3/typed_struct.pb.go b/go/xds/type/v3/typed_struct.pb.go index 72ec85ed..ba42cb0e 100644 --- a/go/xds/type/v3/typed_struct.pb.go +++ b/go/xds/type/v3/typed_struct.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 -// protoc v5.27.0--rc2 +// protoc v5.29.1 // source: xds/type/v3/typed_struct.proto package v3 diff --git a/python/LICENSE b/python/LICENSE new file mode 100644 index 00000000..c9864297 --- /dev/null +++ b/python/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2024 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/python/__init__.py b/python/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/pyproject.toml b/python/pyproject.toml new file mode 100644 index 00000000..a46cdc39 --- /dev/null +++ b/python/pyproject.toml @@ -0,0 +1,19 @@ +[build-system] +requires = ["flit_core >=3.2,<4"] +build-backend = "flit_core.buildapi" + +[project] +name = "xds" +authors = [] +version = "0.1.0" +description = "generated python libraries for xds protos" +license = { file = "LICENSE" } +classifiers = ["License :: OSI Approved :: MIT License"] +dependencies = ["protobuf >=5.29.1", "protoc-gen-validate"] + +[project.urls] +Home = "https://github.com/cncf/xds" + +[tool.flit.metadata] +module = "xds" +requires-python = ">=3.7" diff --git a/python/setup.py b/python/setup.py new file mode 100644 index 00000000..64fc0a37 --- /dev/null +++ b/python/setup.py @@ -0,0 +1,12 @@ +from setuptools import setup, find_packages + +setup( + name='xds', + version='0.1.0', + description='xds Protocol Buffer Messages', + packages=find_packages(), + install_requires=[ + 'protobuf==5.29.1', + 'protoc-gen-validate', + ], +) \ No newline at end of file diff --git a/python/udpa/__init__.py b/python/udpa/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/udpa/annotations/__init__.py b/python/udpa/annotations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/udpa/annotations/migrate_pb2.py b/python/udpa/annotations/migrate_pb2.py new file mode 100644 index 00000000..c1a77098 --- /dev/null +++ b/python/udpa/annotations/migrate_pb2.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: udpa/annotations/migrate.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'udpa/annotations/migrate.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eudpa/annotations/migrate.proto\x12\x10udpa.annotations\x1a google/protobuf/descriptor.proto\"#\n\x11MigrateAnnotation\x12\x0e\n\x06rename\x18\x01 \x01(\t\"A\n\x16\x46ieldMigrateAnnotation\x12\x0e\n\x06rename\x18\x01 \x01(\t\x12\x17\n\x0foneof_promotion\x18\x02 \x01(\t\"0\n\x15\x46ileMigrateAnnotation\x12\x17\n\x0fmove_to_package\x18\x02 \x01(\t:`\n\x0fmessage_migrate\x12\x1f.google.protobuf.MessageOptions\x18\x8e\xe3\xffQ \x01(\x0b\x32#.udpa.annotations.MigrateAnnotation:a\n\rfield_migrate\x12\x1d.google.protobuf.FieldOptions\x18\x8e\xe3\xffQ \x01(\x0b\x32(.udpa.annotations.FieldMigrateAnnotation:Z\n\x0c\x65num_migrate\x12\x1c.google.protobuf.EnumOptions\x18\x8e\xe3\xffQ \x01(\x0b\x32#.udpa.annotations.MigrateAnnotation:e\n\x12\x65num_value_migrate\x12!.google.protobuf.EnumValueOptions\x18\x8e\xe3\xffQ \x01(\x0b\x32#.udpa.annotations.MigrateAnnotation:^\n\x0c\x66ile_migrate\x12\x1c.google.protobuf.FileOptions\x18\x8e\xe3\xffQ \x01(\x0b\x32\'.udpa.annotations.FileMigrateAnnotationB)Z\'github.com/cncf/xds/go/udpa/annotationsb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'udpa.annotations.migrate_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z\'github.com/cncf/xds/go/udpa/annotations' + _globals['_MIGRATEANNOTATION']._serialized_start=86 + _globals['_MIGRATEANNOTATION']._serialized_end=121 + _globals['_FIELDMIGRATEANNOTATION']._serialized_start=123 + _globals['_FIELDMIGRATEANNOTATION']._serialized_end=188 + _globals['_FILEMIGRATEANNOTATION']._serialized_start=190 + _globals['_FILEMIGRATEANNOTATION']._serialized_end=238 +# @@protoc_insertion_point(module_scope) diff --git a/python/udpa/annotations/security_pb2.py b/python/udpa/annotations/security_pb2.py new file mode 100644 index 00000000..18a4f3e4 --- /dev/null +++ b/python/udpa/annotations/security_pb2.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: udpa/annotations/security.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'udpa/annotations/security.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from udpa.annotations import status_pb2 as udpa_dot_annotations_dot_status__pb2 +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fudpa/annotations/security.proto\x12\x10udpa.annotations\x1a\x1dudpa/annotations/status.proto\x1a google/protobuf/descriptor.proto\"o\n\x17\x46ieldSecurityAnnotation\x12*\n\"configure_for_untrusted_downstream\x18\x01 \x01(\x08\x12(\n configure_for_untrusted_upstream\x18\x02 \x01(\x08:]\n\x08security\x12\x1d.google.protobuf.FieldOptions\x18\xb1\xf2\xa6\x05 \x01(\x0b\x32).udpa.annotations.FieldSecurityAnnotationB1Z\'github.com/cncf/xds/go/udpa/annotations\xba\x80\xc8\xd1\x06\x02\x08\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'udpa.annotations.security_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z\'github.com/cncf/xds/go/udpa/annotations\272\200\310\321\006\002\010\001' + _globals['_FIELDSECURITYANNOTATION']._serialized_start=118 + _globals['_FIELDSECURITYANNOTATION']._serialized_end=229 +# @@protoc_insertion_point(module_scope) diff --git a/python/udpa/annotations/sensitive_pb2.py b/python/udpa/annotations/sensitive_pb2.py new file mode 100644 index 00000000..dd7ffbbd --- /dev/null +++ b/python/udpa/annotations/sensitive_pb2.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: udpa/annotations/sensitive.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'udpa/annotations/sensitive.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n udpa/annotations/sensitive.proto\x12\x10udpa.annotations\x1a google/protobuf/descriptor.proto:3\n\tsensitive\x12\x1d.google.protobuf.FieldOptions\x18\xf7\xb6\xc1$ \x01(\x08\x42)Z\'github.com/cncf/xds/go/udpa/annotationsb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'udpa.annotations.sensitive_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z\'github.com/cncf/xds/go/udpa/annotations' +# @@protoc_insertion_point(module_scope) diff --git a/python/udpa/annotations/status_pb2.py b/python/udpa/annotations/status_pb2.py new file mode 100644 index 00000000..36d12477 --- /dev/null +++ b/python/udpa/annotations/status_pb2.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: udpa/annotations/status.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'udpa/annotations/status.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dudpa/annotations/status.proto\x12\x10udpa.annotations\x1a google/protobuf/descriptor.proto\"t\n\x10StatusAnnotation\x12\x18\n\x10work_in_progress\x18\x01 \x01(\x08\x12\x46\n\x16package_version_status\x18\x02 \x01(\x0e\x32&.udpa.annotations.PackageVersionStatus*]\n\x14PackageVersionStatus\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06\x46ROZEN\x10\x01\x12\n\n\x06\x41\x43TIVE\x10\x02\x12 \n\x1cNEXT_MAJOR_VERSION_CANDIDATE\x10\x03:X\n\x0b\x66ile_status\x12\x1c.google.protobuf.FileOptions\x18\x87\x80\x99j \x01(\x0b\x32\".udpa.annotations.StatusAnnotationB)Z\'github.com/cncf/xds/go/udpa/annotationsb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'udpa.annotations.status_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z\'github.com/cncf/xds/go/udpa/annotations' + _globals['_PACKAGEVERSIONSTATUS']._serialized_start=203 + _globals['_PACKAGEVERSIONSTATUS']._serialized_end=296 + _globals['_STATUSANNOTATION']._serialized_start=85 + _globals['_STATUSANNOTATION']._serialized_end=201 +# @@protoc_insertion_point(module_scope) diff --git a/python/udpa/annotations/versioning_pb2.py b/python/udpa/annotations/versioning_pb2.py new file mode 100644 index 00000000..ce56e4ac --- /dev/null +++ b/python/udpa/annotations/versioning_pb2.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: udpa/annotations/versioning.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'udpa/annotations/versioning.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!udpa/annotations/versioning.proto\x12\x10udpa.annotations\x1a google/protobuf/descriptor.proto\"5\n\x14VersioningAnnotation\x12\x1d\n\x15previous_message_type\x18\x01 \x01(\t:^\n\nversioning\x12\x1f.google.protobuf.MessageOptions\x18\xd3\x88\xe1\x03 \x01(\x0b\x32&.udpa.annotations.VersioningAnnotationB)Z\'github.com/cncf/xds/go/udpa/annotationsb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'udpa.annotations.versioning_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z\'github.com/cncf/xds/go/udpa/annotations' + _globals['_VERSIONINGANNOTATION']._serialized_start=89 + _globals['_VERSIONINGANNOTATION']._serialized_end=142 +# @@protoc_insertion_point(module_scope) diff --git a/python/udpa/data/__init__.py b/python/udpa/data/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/udpa/data/orca/__init__.py b/python/udpa/data/orca/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/udpa/data/orca/v1/__init__.py b/python/udpa/data/orca/v1/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/udpa/data/orca/v1/orca_load_report_pb2.py b/python/udpa/data/orca/v1/orca_load_report_pb2.py new file mode 100644 index 00000000..864dcc96 --- /dev/null +++ b/python/udpa/data/orca/v1/orca_load_report_pb2.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: udpa/data/orca/v1/orca_load_report.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'udpa/data/orca/v1/orca_load_report.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(udpa/data/orca/v1/orca_load_report.proto\x12\x11udpa.data.orca.v1\x1a\x17validate/validate.proto\"\x9a\x03\n\x0eOrcaLoadReport\x12\x30\n\x0f\x63pu_utilization\x18\x01 \x01(\x01\x42\x17\xfa\x42\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\xf0?)\x00\x00\x00\x00\x00\x00\x00\x00\x12\x30\n\x0fmem_utilization\x18\x02 \x01(\x01\x42\x17\xfa\x42\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\xf0?)\x00\x00\x00\x00\x00\x00\x00\x00\x12\x0b\n\x03rps\x18\x03 \x01(\x04\x12H\n\x0crequest_cost\x18\x04 \x03(\x0b\x32\x32.udpa.data.orca.v1.OrcaLoadReport.RequestCostEntry\x12\x65\n\x0butilization\x18\x05 \x03(\x0b\x32\x32.udpa.data.orca.v1.OrcaLoadReport.UtilizationEntryB\x1c\xfa\x42\x19\x9a\x01\x16*\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\xf0?)\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x32\n\x10RequestCostEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x1a\x32\n\x10UtilizationEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x42\x64\n!com.github.udpa.udpa.data.orca.v1B\x13OrcaLoadReportProtoP\x01Z(github.com/cncf/xds/go/udpa/data/orca/v1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'udpa.data.orca.v1.orca_load_report_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n!com.github.udpa.udpa.data.orca.v1B\023OrcaLoadReportProtoP\001Z(github.com/cncf/xds/go/udpa/data/orca/v1' + _globals['_ORCALOADREPORT_REQUESTCOSTENTRY']._loaded_options = None + _globals['_ORCALOADREPORT_REQUESTCOSTENTRY']._serialized_options = b'8\001' + _globals['_ORCALOADREPORT_UTILIZATIONENTRY']._loaded_options = None + _globals['_ORCALOADREPORT_UTILIZATIONENTRY']._serialized_options = b'8\001' + _globals['_ORCALOADREPORT'].fields_by_name['cpu_utilization']._loaded_options = None + _globals['_ORCALOADREPORT'].fields_by_name['cpu_utilization']._serialized_options = b'\372B\024\022\022\031\000\000\000\000\000\000\360?)\000\000\000\000\000\000\000\000' + _globals['_ORCALOADREPORT'].fields_by_name['mem_utilization']._loaded_options = None + _globals['_ORCALOADREPORT'].fields_by_name['mem_utilization']._serialized_options = b'\372B\024\022\022\031\000\000\000\000\000\000\360?)\000\000\000\000\000\000\000\000' + _globals['_ORCALOADREPORT'].fields_by_name['utilization']._loaded_options = None + _globals['_ORCALOADREPORT'].fields_by_name['utilization']._serialized_options = b'\372B\031\232\001\026*\024\022\022\031\000\000\000\000\000\000\360?)\000\000\000\000\000\000\000\000' + _globals['_ORCALOADREPORT']._serialized_start=89 + _globals['_ORCALOADREPORT']._serialized_end=499 + _globals['_ORCALOADREPORT_REQUESTCOSTENTRY']._serialized_start=397 + _globals['_ORCALOADREPORT_REQUESTCOSTENTRY']._serialized_end=447 + _globals['_ORCALOADREPORT_UTILIZATIONENTRY']._serialized_start=449 + _globals['_ORCALOADREPORT_UTILIZATIONENTRY']._serialized_end=499 +# @@protoc_insertion_point(module_scope) diff --git a/python/udpa/service/__init__.py b/python/udpa/service/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/udpa/service/orca/__init__.py b/python/udpa/service/orca/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/udpa/service/orca/v1/__init__.py b/python/udpa/service/orca/v1/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/udpa/service/orca/v1/orca_pb2.py b/python/udpa/service/orca/v1/orca_pb2.py new file mode 100644 index 00000000..4c3753f2 --- /dev/null +++ b/python/udpa/service/orca/v1/orca_pb2.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: udpa/service/orca/v1/orca.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'udpa/service/orca/v1/orca.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from udpa.data.orca.v1 import orca_load_report_pb2 as udpa_dot_data_dot_orca_dot_v1_dot_orca__load__report__pb2 +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fudpa/service/orca/v1/orca.proto\x12\x14udpa.service.orca.v1\x1a(udpa/data/orca/v1/orca_load_report.proto\x1a\x1egoogle/protobuf/duration.proto\"g\n\x15OrcaLoadReportRequest\x12\x32\n\x0freport_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1a\n\x12request_cost_names\x18\x02 \x03(\t2w\n\x0eOpenRcaService\x12\x65\n\x11StreamCoreMetrics\x12+.udpa.service.orca.v1.OrcaLoadReportRequest\x1a!.udpa.data.orca.v1.OrcaLoadReport0\x01\x42`\n$com.github.udpa.udpa.service.orca.v1B\tOrcaProtoP\x01Z+github.com/cncf/xds/go/udpa/service/orca/v1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'udpa.service.orca.v1.orca_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n$com.github.udpa.udpa.service.orca.v1B\tOrcaProtoP\001Z+github.com/cncf/xds/go/udpa/service/orca/v1' + _globals['_ORCALOADREPORTREQUEST']._serialized_start=131 + _globals['_ORCALOADREPORTREQUEST']._serialized_end=234 + _globals['_OPENRCASERVICE']._serialized_start=236 + _globals['_OPENRCASERVICE']._serialized_end=355 +# @@protoc_insertion_point(module_scope) diff --git a/python/udpa/type/__init__.py b/python/udpa/type/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/udpa/type/v1/__init__.py b/python/udpa/type/v1/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/udpa/type/v1/typed_struct_pb2.py b/python/udpa/type/v1/typed_struct_pb2.py new file mode 100644 index 00000000..f7f38516 --- /dev/null +++ b/python/udpa/type/v1/typed_struct_pb2.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: udpa/type/v1/typed_struct.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'udpa/type/v1/typed_struct.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fudpa/type/v1/typed_struct.proto\x12\x0cudpa.type.v1\x1a\x1cgoogle/protobuf/struct.proto\"G\n\x0bTypedStruct\x12\x10\n\x08type_url\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructBW\n\x1c\x63om.github.udpa.udpa.type.v1B\x10TypedStructProtoP\x01Z#github.com/cncf/xds/go/udpa/type/v1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'udpa.type.v1.typed_struct_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\034com.github.udpa.udpa.type.v1B\020TypedStructProtoP\001Z#github.com/cncf/xds/go/udpa/type/v1' + _globals['_TYPEDSTRUCT']._serialized_start=79 + _globals['_TYPEDSTRUCT']._serialized_end=150 +# @@protoc_insertion_point(module_scope) diff --git a/python/validate/validate_pb2.py b/python/validate/validate_pb2.py new file mode 100644 index 00000000..ffc8e9f4 --- /dev/null +++ b/python/validate/validate_pb2.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: validate/validate.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'validate/validate.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17validate/validate.proto\x12\x08validate\x1a google/protobuf/descriptor.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x98\x07\n\nFieldRules\x12\'\n\x07message\x18\x11 \x01(\x0b\x32\x16.validate.MessageRules\x12%\n\x05\x66loat\x18\x01 \x01(\x0b\x32\x14.validate.FloatRulesH\x00\x12\'\n\x06\x64ouble\x18\x02 \x01(\x0b\x32\x15.validate.DoubleRulesH\x00\x12%\n\x05int32\x18\x03 \x01(\x0b\x32\x14.validate.Int32RulesH\x00\x12%\n\x05int64\x18\x04 \x01(\x0b\x32\x14.validate.Int64RulesH\x00\x12\'\n\x06uint32\x18\x05 \x01(\x0b\x32\x15.validate.UInt32RulesH\x00\x12\'\n\x06uint64\x18\x06 \x01(\x0b\x32\x15.validate.UInt64RulesH\x00\x12\'\n\x06sint32\x18\x07 \x01(\x0b\x32\x15.validate.SInt32RulesH\x00\x12\'\n\x06sint64\x18\x08 \x01(\x0b\x32\x15.validate.SInt64RulesH\x00\x12)\n\x07\x66ixed32\x18\t \x01(\x0b\x32\x16.validate.Fixed32RulesH\x00\x12)\n\x07\x66ixed64\x18\n \x01(\x0b\x32\x16.validate.Fixed64RulesH\x00\x12+\n\x08sfixed32\x18\x0b \x01(\x0b\x32\x17.validate.SFixed32RulesH\x00\x12+\n\x08sfixed64\x18\x0c \x01(\x0b\x32\x17.validate.SFixed64RulesH\x00\x12#\n\x04\x62ool\x18\r \x01(\x0b\x32\x13.validate.BoolRulesH\x00\x12\'\n\x06string\x18\x0e \x01(\x0b\x32\x15.validate.StringRulesH\x00\x12%\n\x05\x62ytes\x18\x0f \x01(\x0b\x32\x14.validate.BytesRulesH\x00\x12#\n\x04\x65num\x18\x10 \x01(\x0b\x32\x13.validate.EnumRulesH\x00\x12+\n\x08repeated\x18\x12 \x01(\x0b\x32\x17.validate.RepeatedRulesH\x00\x12!\n\x03map\x18\x13 \x01(\x0b\x32\x12.validate.MapRulesH\x00\x12!\n\x03\x61ny\x18\x14 \x01(\x0b\x32\x12.validate.AnyRulesH\x00\x12+\n\x08\x64uration\x18\x15 \x01(\x0b\x32\x17.validate.DurationRulesH\x00\x12-\n\ttimestamp\x18\x16 \x01(\x0b\x32\x18.validate.TimestampRulesH\x00\x42\x06\n\x04type\"\x7f\n\nFloatRules\x12\r\n\x05\x63onst\x18\x01 \x01(\x02\x12\n\n\x02lt\x18\x02 \x01(\x02\x12\x0b\n\x03lte\x18\x03 \x01(\x02\x12\n\n\x02gt\x18\x04 \x01(\x02\x12\x0b\n\x03gte\x18\x05 \x01(\x02\x12\n\n\x02in\x18\x06 \x03(\x02\x12\x0e\n\x06not_in\x18\x07 \x03(\x02\x12\x14\n\x0cignore_empty\x18\x08 \x01(\x08\"\x80\x01\n\x0b\x44oubleRules\x12\r\n\x05\x63onst\x18\x01 \x01(\x01\x12\n\n\x02lt\x18\x02 \x01(\x01\x12\x0b\n\x03lte\x18\x03 \x01(\x01\x12\n\n\x02gt\x18\x04 \x01(\x01\x12\x0b\n\x03gte\x18\x05 \x01(\x01\x12\n\n\x02in\x18\x06 \x03(\x01\x12\x0e\n\x06not_in\x18\x07 \x03(\x01\x12\x14\n\x0cignore_empty\x18\x08 \x01(\x08\"\x7f\n\nInt32Rules\x12\r\n\x05\x63onst\x18\x01 \x01(\x05\x12\n\n\x02lt\x18\x02 \x01(\x05\x12\x0b\n\x03lte\x18\x03 \x01(\x05\x12\n\n\x02gt\x18\x04 \x01(\x05\x12\x0b\n\x03gte\x18\x05 \x01(\x05\x12\n\n\x02in\x18\x06 \x03(\x05\x12\x0e\n\x06not_in\x18\x07 \x03(\x05\x12\x14\n\x0cignore_empty\x18\x08 \x01(\x08\"\x7f\n\nInt64Rules\x12\r\n\x05\x63onst\x18\x01 \x01(\x03\x12\n\n\x02lt\x18\x02 \x01(\x03\x12\x0b\n\x03lte\x18\x03 \x01(\x03\x12\n\n\x02gt\x18\x04 \x01(\x03\x12\x0b\n\x03gte\x18\x05 \x01(\x03\x12\n\n\x02in\x18\x06 \x03(\x03\x12\x0e\n\x06not_in\x18\x07 \x03(\x03\x12\x14\n\x0cignore_empty\x18\x08 \x01(\x08\"\x80\x01\n\x0bUInt32Rules\x12\r\n\x05\x63onst\x18\x01 \x01(\r\x12\n\n\x02lt\x18\x02 \x01(\r\x12\x0b\n\x03lte\x18\x03 \x01(\r\x12\n\n\x02gt\x18\x04 \x01(\r\x12\x0b\n\x03gte\x18\x05 \x01(\r\x12\n\n\x02in\x18\x06 \x03(\r\x12\x0e\n\x06not_in\x18\x07 \x03(\r\x12\x14\n\x0cignore_empty\x18\x08 \x01(\x08\"\x80\x01\n\x0bUInt64Rules\x12\r\n\x05\x63onst\x18\x01 \x01(\x04\x12\n\n\x02lt\x18\x02 \x01(\x04\x12\x0b\n\x03lte\x18\x03 \x01(\x04\x12\n\n\x02gt\x18\x04 \x01(\x04\x12\x0b\n\x03gte\x18\x05 \x01(\x04\x12\n\n\x02in\x18\x06 \x03(\x04\x12\x0e\n\x06not_in\x18\x07 \x03(\x04\x12\x14\n\x0cignore_empty\x18\x08 \x01(\x08\"\x80\x01\n\x0bSInt32Rules\x12\r\n\x05\x63onst\x18\x01 \x01(\x11\x12\n\n\x02lt\x18\x02 \x01(\x11\x12\x0b\n\x03lte\x18\x03 \x01(\x11\x12\n\n\x02gt\x18\x04 \x01(\x11\x12\x0b\n\x03gte\x18\x05 \x01(\x11\x12\n\n\x02in\x18\x06 \x03(\x11\x12\x0e\n\x06not_in\x18\x07 \x03(\x11\x12\x14\n\x0cignore_empty\x18\x08 \x01(\x08\"\x80\x01\n\x0bSInt64Rules\x12\r\n\x05\x63onst\x18\x01 \x01(\x12\x12\n\n\x02lt\x18\x02 \x01(\x12\x12\x0b\n\x03lte\x18\x03 \x01(\x12\x12\n\n\x02gt\x18\x04 \x01(\x12\x12\x0b\n\x03gte\x18\x05 \x01(\x12\x12\n\n\x02in\x18\x06 \x03(\x12\x12\x0e\n\x06not_in\x18\x07 \x03(\x12\x12\x14\n\x0cignore_empty\x18\x08 \x01(\x08\"\x81\x01\n\x0c\x46ixed32Rules\x12\r\n\x05\x63onst\x18\x01 \x01(\x07\x12\n\n\x02lt\x18\x02 \x01(\x07\x12\x0b\n\x03lte\x18\x03 \x01(\x07\x12\n\n\x02gt\x18\x04 \x01(\x07\x12\x0b\n\x03gte\x18\x05 \x01(\x07\x12\n\n\x02in\x18\x06 \x03(\x07\x12\x0e\n\x06not_in\x18\x07 \x03(\x07\x12\x14\n\x0cignore_empty\x18\x08 \x01(\x08\"\x81\x01\n\x0c\x46ixed64Rules\x12\r\n\x05\x63onst\x18\x01 \x01(\x06\x12\n\n\x02lt\x18\x02 \x01(\x06\x12\x0b\n\x03lte\x18\x03 \x01(\x06\x12\n\n\x02gt\x18\x04 \x01(\x06\x12\x0b\n\x03gte\x18\x05 \x01(\x06\x12\n\n\x02in\x18\x06 \x03(\x06\x12\x0e\n\x06not_in\x18\x07 \x03(\x06\x12\x14\n\x0cignore_empty\x18\x08 \x01(\x08\"\x82\x01\n\rSFixed32Rules\x12\r\n\x05\x63onst\x18\x01 \x01(\x0f\x12\n\n\x02lt\x18\x02 \x01(\x0f\x12\x0b\n\x03lte\x18\x03 \x01(\x0f\x12\n\n\x02gt\x18\x04 \x01(\x0f\x12\x0b\n\x03gte\x18\x05 \x01(\x0f\x12\n\n\x02in\x18\x06 \x03(\x0f\x12\x0e\n\x06not_in\x18\x07 \x03(\x0f\x12\x14\n\x0cignore_empty\x18\x08 \x01(\x08\"\x82\x01\n\rSFixed64Rules\x12\r\n\x05\x63onst\x18\x01 \x01(\x10\x12\n\n\x02lt\x18\x02 \x01(\x10\x12\x0b\n\x03lte\x18\x03 \x01(\x10\x12\n\n\x02gt\x18\x04 \x01(\x10\x12\x0b\n\x03gte\x18\x05 \x01(\x10\x12\n\n\x02in\x18\x06 \x03(\x10\x12\x0e\n\x06not_in\x18\x07 \x03(\x10\x12\x14\n\x0cignore_empty\x18\x08 \x01(\x08\"\x1a\n\tBoolRules\x12\r\n\x05\x63onst\x18\x01 \x01(\x08\"\xfd\x03\n\x0bStringRules\x12\r\n\x05\x63onst\x18\x01 \x01(\t\x12\x0b\n\x03len\x18\x13 \x01(\x04\x12\x0f\n\x07min_len\x18\x02 \x01(\x04\x12\x0f\n\x07max_len\x18\x03 \x01(\x04\x12\x11\n\tlen_bytes\x18\x14 \x01(\x04\x12\x11\n\tmin_bytes\x18\x04 \x01(\x04\x12\x11\n\tmax_bytes\x18\x05 \x01(\x04\x12\x0f\n\x07pattern\x18\x06 \x01(\t\x12\x0e\n\x06prefix\x18\x07 \x01(\t\x12\x0e\n\x06suffix\x18\x08 \x01(\t\x12\x10\n\x08\x63ontains\x18\t \x01(\t\x12\x14\n\x0cnot_contains\x18\x17 \x01(\t\x12\n\n\x02in\x18\n \x03(\t\x12\x0e\n\x06not_in\x18\x0b \x03(\t\x12\x0f\n\x05\x65mail\x18\x0c \x01(\x08H\x00\x12\x12\n\x08hostname\x18\r \x01(\x08H\x00\x12\x0c\n\x02ip\x18\x0e \x01(\x08H\x00\x12\x0e\n\x04ipv4\x18\x0f \x01(\x08H\x00\x12\x0e\n\x04ipv6\x18\x10 \x01(\x08H\x00\x12\r\n\x03uri\x18\x11 \x01(\x08H\x00\x12\x11\n\x07uri_ref\x18\x12 \x01(\x08H\x00\x12\x11\n\x07\x61\x64\x64ress\x18\x15 \x01(\x08H\x00\x12\x0e\n\x04uuid\x18\x16 \x01(\x08H\x00\x12\x30\n\x10well_known_regex\x18\x18 \x01(\x0e\x32\x14.validate.KnownRegexH\x00\x12\x14\n\x06strict\x18\x19 \x01(\x08:\x04true\x12\x14\n\x0cignore_empty\x18\x1a \x01(\x08\x42\x0c\n\nwell_known\"\xfb\x01\n\nBytesRules\x12\r\n\x05\x63onst\x18\x01 \x01(\x0c\x12\x0b\n\x03len\x18\r \x01(\x04\x12\x0f\n\x07min_len\x18\x02 \x01(\x04\x12\x0f\n\x07max_len\x18\x03 \x01(\x04\x12\x0f\n\x07pattern\x18\x04 \x01(\t\x12\x0e\n\x06prefix\x18\x05 \x01(\x0c\x12\x0e\n\x06suffix\x18\x06 \x01(\x0c\x12\x10\n\x08\x63ontains\x18\x07 \x01(\x0c\x12\n\n\x02in\x18\x08 \x03(\x0c\x12\x0e\n\x06not_in\x18\t \x03(\x0c\x12\x0c\n\x02ip\x18\n \x01(\x08H\x00\x12\x0e\n\x04ipv4\x18\x0b \x01(\x08H\x00\x12\x0e\n\x04ipv6\x18\x0c \x01(\x08H\x00\x12\x14\n\x0cignore_empty\x18\x0e \x01(\x08\x42\x0c\n\nwell_known\"L\n\tEnumRules\x12\r\n\x05\x63onst\x18\x01 \x01(\x05\x12\x14\n\x0c\x64\x65\x66ined_only\x18\x02 \x01(\x08\x12\n\n\x02in\x18\x03 \x03(\x05\x12\x0e\n\x06not_in\x18\x04 \x03(\x05\".\n\x0cMessageRules\x12\x0c\n\x04skip\x18\x01 \x01(\x08\x12\x10\n\x08required\x18\x02 \x01(\x08\"\x80\x01\n\rRepeatedRules\x12\x11\n\tmin_items\x18\x01 \x01(\x04\x12\x11\n\tmax_items\x18\x02 \x01(\x04\x12\x0e\n\x06unique\x18\x03 \x01(\x08\x12#\n\x05items\x18\x04 \x01(\x0b\x32\x14.validate.FieldRules\x12\x14\n\x0cignore_empty\x18\x05 \x01(\x08\"\xa3\x01\n\x08MapRules\x12\x11\n\tmin_pairs\x18\x01 \x01(\x04\x12\x11\n\tmax_pairs\x18\x02 \x01(\x04\x12\x11\n\tno_sparse\x18\x03 \x01(\x08\x12\"\n\x04keys\x18\x04 \x01(\x0b\x32\x14.validate.FieldRules\x12$\n\x06values\x18\x05 \x01(\x0b\x32\x14.validate.FieldRules\x12\x14\n\x0cignore_empty\x18\x06 \x01(\x08\"8\n\x08\x41nyRules\x12\x10\n\x08required\x18\x01 \x01(\x08\x12\n\n\x02in\x18\x02 \x03(\t\x12\x0e\n\x06not_in\x18\x03 \x03(\t\"\xbb\x02\n\rDurationRules\x12\x10\n\x08required\x18\x01 \x01(\x08\x12(\n\x05\x63onst\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12%\n\x02lt\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12&\n\x03lte\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12%\n\x02gt\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12&\n\x03gte\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12%\n\x02in\x18\x07 \x03(\x0b\x32\x19.google.protobuf.Duration\x12)\n\x06not_in\x18\x08 \x03(\x0b\x32\x19.google.protobuf.Duration\"\xba\x02\n\x0eTimestampRules\x12\x10\n\x08required\x18\x01 \x01(\x08\x12)\n\x05\x63onst\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12&\n\x02lt\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x03lte\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12&\n\x02gt\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x03gte\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0e\n\x06lt_now\x18\x07 \x01(\x08\x12\x0e\n\x06gt_now\x18\x08 \x01(\x08\x12)\n\x06within\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration*F\n\nKnownRegex\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x14\n\x10HTTP_HEADER_NAME\x10\x01\x12\x15\n\x11HTTP_HEADER_VALUE\x10\x02:2\n\x08\x64isabled\x12\x1f.google.protobuf.MessageOptions\x18\xaf\x08 \x01(\x08:1\n\x07ignored\x12\x1f.google.protobuf.MessageOptions\x18\xb0\x08 \x01(\x08:0\n\x08required\x12\x1d.google.protobuf.OneofOptions\x18\xaf\x08 \x01(\x08:C\n\x05rules\x12\x1d.google.protobuf.FieldOptions\x18\xaf\x08 \x01(\x0b\x32\x14.validate.FieldRulesBP\n\x1aio.envoyproxy.pgv.validateZ2github.com/envoyproxy/protoc-gen-validate/validate') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'validate.validate_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\032io.envoyproxy.pgv.validateZ2github.com/envoyproxy/protoc-gen-validate/validate' + _globals['_KNOWNREGEX']._serialized_start=4541 + _globals['_KNOWNREGEX']._serialized_end=4611 + _globals['_FIELDRULES']._serialized_start=137 + _globals['_FIELDRULES']._serialized_end=1057 + _globals['_FLOATRULES']._serialized_start=1059 + _globals['_FLOATRULES']._serialized_end=1186 + _globals['_DOUBLERULES']._serialized_start=1189 + _globals['_DOUBLERULES']._serialized_end=1317 + _globals['_INT32RULES']._serialized_start=1319 + _globals['_INT32RULES']._serialized_end=1446 + _globals['_INT64RULES']._serialized_start=1448 + _globals['_INT64RULES']._serialized_end=1575 + _globals['_UINT32RULES']._serialized_start=1578 + _globals['_UINT32RULES']._serialized_end=1706 + _globals['_UINT64RULES']._serialized_start=1709 + _globals['_UINT64RULES']._serialized_end=1837 + _globals['_SINT32RULES']._serialized_start=1840 + _globals['_SINT32RULES']._serialized_end=1968 + _globals['_SINT64RULES']._serialized_start=1971 + _globals['_SINT64RULES']._serialized_end=2099 + _globals['_FIXED32RULES']._serialized_start=2102 + _globals['_FIXED32RULES']._serialized_end=2231 + _globals['_FIXED64RULES']._serialized_start=2234 + _globals['_FIXED64RULES']._serialized_end=2363 + _globals['_SFIXED32RULES']._serialized_start=2366 + _globals['_SFIXED32RULES']._serialized_end=2496 + _globals['_SFIXED64RULES']._serialized_start=2499 + _globals['_SFIXED64RULES']._serialized_end=2629 + _globals['_BOOLRULES']._serialized_start=2631 + _globals['_BOOLRULES']._serialized_end=2657 + _globals['_STRINGRULES']._serialized_start=2660 + _globals['_STRINGRULES']._serialized_end=3169 + _globals['_BYTESRULES']._serialized_start=3172 + _globals['_BYTESRULES']._serialized_end=3423 + _globals['_ENUMRULES']._serialized_start=3425 + _globals['_ENUMRULES']._serialized_end=3501 + _globals['_MESSAGERULES']._serialized_start=3503 + _globals['_MESSAGERULES']._serialized_end=3549 + _globals['_REPEATEDRULES']._serialized_start=3552 + _globals['_REPEATEDRULES']._serialized_end=3680 + _globals['_MAPRULES']._serialized_start=3683 + _globals['_MAPRULES']._serialized_end=3846 + _globals['_ANYRULES']._serialized_start=3848 + _globals['_ANYRULES']._serialized_end=3904 + _globals['_DURATIONRULES']._serialized_start=3907 + _globals['_DURATIONRULES']._serialized_end=4222 + _globals['_TIMESTAMPRULES']._serialized_start=4225 + _globals['_TIMESTAMPRULES']._serialized_end=4539 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/__init__.py b/python/xds/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/annotations/__init__.py b/python/xds/annotations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/annotations/v3/__init__.py b/python/xds/annotations/v3/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/annotations/v3/migrate_pb2.py b/python/xds/annotations/v3/migrate_pb2.py new file mode 100644 index 00000000..810273c1 --- /dev/null +++ b/python/xds/annotations/v3/migrate_pb2.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/annotations/v3/migrate.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/annotations/v3/migrate.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n xds/annotations/v3/migrate.proto\x12\x12xds.annotations.v3\x1a google/protobuf/descriptor.proto\"#\n\x11MigrateAnnotation\x12\x0e\n\x06rename\x18\x01 \x01(\t\"A\n\x16\x46ieldMigrateAnnotation\x12\x0e\n\x06rename\x18\x01 \x01(\t\x12\x17\n\x0foneof_promotion\x18\x02 \x01(\t\"0\n\x15\x46ileMigrateAnnotation\x12\x17\n\x0fmove_to_package\x18\x02 \x01(\t:b\n\x0fmessage_migrate\x12\x1f.google.protobuf.MessageOptions\x18\xce\xe9\xed\x35 \x01(\x0b\x32%.xds.annotations.v3.MigrateAnnotation:c\n\rfield_migrate\x12\x1d.google.protobuf.FieldOptions\x18\xce\xe9\xed\x35 \x01(\x0b\x32*.xds.annotations.v3.FieldMigrateAnnotation:\\\n\x0c\x65num_migrate\x12\x1c.google.protobuf.EnumOptions\x18\xce\xe9\xed\x35 \x01(\x0b\x32%.xds.annotations.v3.MigrateAnnotation:g\n\x12\x65num_value_migrate\x12!.google.protobuf.EnumValueOptions\x18\xce\xe9\xed\x35 \x01(\x0b\x32%.xds.annotations.v3.MigrateAnnotation:`\n\x0c\x66ile_migrate\x12\x1c.google.protobuf.FileOptions\x18\xce\xe9\xed\x35 \x01(\x0b\x32).xds.annotations.v3.FileMigrateAnnotationB+Z)github.com/cncf/xds/go/xds/annotations/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.annotations.v3.migrate_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z)github.com/cncf/xds/go/xds/annotations/v3' + _globals['_MIGRATEANNOTATION']._serialized_start=90 + _globals['_MIGRATEANNOTATION']._serialized_end=125 + _globals['_FIELDMIGRATEANNOTATION']._serialized_start=127 + _globals['_FIELDMIGRATEANNOTATION']._serialized_end=192 + _globals['_FILEMIGRATEANNOTATION']._serialized_start=194 + _globals['_FILEMIGRATEANNOTATION']._serialized_end=242 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/annotations/v3/security_pb2.py b/python/xds/annotations/v3/security_pb2.py new file mode 100644 index 00000000..1ad0ac24 --- /dev/null +++ b/python/xds/annotations/v3/security_pb2.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/annotations/v3/security.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/annotations/v3/security.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.annotations.v3 import status_pb2 as xds_dot_annotations_dot_v3_dot_status__pb2 +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!xds/annotations/v3/security.proto\x12\x12xds.annotations.v3\x1a\x1fxds/annotations/v3/status.proto\x1a google/protobuf/descriptor.proto\"o\n\x17\x46ieldSecurityAnnotation\x12*\n\"configure_for_untrusted_downstream\x18\x01 \x01(\x08\x12(\n configure_for_untrusted_upstream\x18\x02 \x01(\x08:_\n\x08security\x12\x1d.google.protobuf.FieldOptions\x18\xa7\x96\x9d/ \x01(\x0b\x32+.xds.annotations.v3.FieldSecurityAnnotationB3Z)github.com/cncf/xds/go/xds/annotations/v3\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.annotations.v3.security_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z)github.com/cncf/xds/go/xds/annotations/v3\322\306\244\341\006\002\010\001' + _globals['_FIELDSECURITYANNOTATION']._serialized_start=124 + _globals['_FIELDSECURITYANNOTATION']._serialized_end=235 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/annotations/v3/sensitive_pb2.py b/python/xds/annotations/v3/sensitive_pb2.py new file mode 100644 index 00000000..eeaa929f --- /dev/null +++ b/python/xds/annotations/v3/sensitive_pb2.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/annotations/v3/sensitive.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/annotations/v3/sensitive.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"xds/annotations/v3/sensitive.proto\x12\x12xds.annotations.v3\x1a google/protobuf/descriptor.proto:3\n\tsensitive\x12\x1d.google.protobuf.FieldOptions\x18\xb5\xd1\x8b\x1d \x01(\x08\x42+Z)github.com/cncf/xds/go/xds/annotations/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.annotations.v3.sensitive_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z)github.com/cncf/xds/go/xds/annotations/v3' +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/annotations/v3/status_pb2.py b/python/xds/annotations/v3/status_pb2.py new file mode 100644 index 00000000..37222876 --- /dev/null +++ b/python/xds/annotations/v3/status_pb2.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/annotations/v3/status.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/annotations/v3/status.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fxds/annotations/v3/status.proto\x12\x12xds.annotations.v3\x1a google/protobuf/descriptor.proto\"0\n\x14\x46ileStatusAnnotation\x12\x18\n\x10work_in_progress\x18\x01 \x01(\x08\"3\n\x17MessageStatusAnnotation\x12\x18\n\x10work_in_progress\x18\x01 \x01(\x08\"1\n\x15\x46ieldStatusAnnotation\x12\x18\n\x10work_in_progress\x18\x01 \x01(\x08\"v\n\x10StatusAnnotation\x12\x18\n\x10work_in_progress\x18\x01 \x01(\x08\x12H\n\x16package_version_status\x18\x02 \x01(\x0e\x32(.xds.annotations.v3.PackageVersionStatus*]\n\x14PackageVersionStatus\x12\x0b\n\x07UNKNOWN\x10\x00\x12\n\n\x06\x46ROZEN\x10\x01\x12\n\n\x06\x41\x43TIVE\x10\x02\x12 \n\x1cNEXT_MAJOR_VERSION_CANDIDATE\x10\x03:^\n\x0b\x66ile_status\x12\x1c.google.protobuf.FileOptions\x18\xea\xc8\x94l \x01(\x0b\x32(.xds.annotations.v3.FileStatusAnnotation:g\n\x0emessage_status\x12\x1f.google.protobuf.MessageOptions\x18\xea\xc8\x94l \x01(\x0b\x32+.xds.annotations.v3.MessageStatusAnnotation:a\n\x0c\x66ield_status\x12\x1d.google.protobuf.FieldOptions\x18\xea\xc8\x94l \x01(\x0b\x32).xds.annotations.v3.FieldStatusAnnotationB+Z)github.com/cncf/xds/go/xds/annotations/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.annotations.v3.status_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z)github.com/cncf/xds/go/xds/annotations/v3' + _globals['_PACKAGEVERSIONSTATUS']._serialized_start=363 + _globals['_PACKAGEVERSIONSTATUS']._serialized_end=456 + _globals['_FILESTATUSANNOTATION']._serialized_start=89 + _globals['_FILESTATUSANNOTATION']._serialized_end=137 + _globals['_MESSAGESTATUSANNOTATION']._serialized_start=139 + _globals['_MESSAGESTATUSANNOTATION']._serialized_end=190 + _globals['_FIELDSTATUSANNOTATION']._serialized_start=192 + _globals['_FIELDSTATUSANNOTATION']._serialized_end=241 + _globals['_STATUSANNOTATION']._serialized_start=243 + _globals['_STATUSANNOTATION']._serialized_end=361 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/annotations/v3/versioning_pb2.py b/python/xds/annotations/v3/versioning_pb2.py new file mode 100644 index 00000000..55d557ce --- /dev/null +++ b/python/xds/annotations/v3/versioning_pb2.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/annotations/v3/versioning.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/annotations/v3/versioning.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#xds/annotations/v3/versioning.proto\x12\x12xds.annotations.v3\x1a google/protobuf/descriptor.proto\"5\n\x14VersioningAnnotation\x12\x1d\n\x15previous_message_type\x18\x01 \x01(\t:`\n\nversioning\x12\x1f.google.protobuf.MessageOptions\x18\x93\xfd\x86, \x01(\x0b\x32(.xds.annotations.v3.VersioningAnnotationB+Z)github.com/cncf/xds/go/xds/annotations/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.annotations.v3.versioning_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'Z)github.com/cncf/xds/go/xds/annotations/v3' + _globals['_VERSIONINGANNOTATION']._serialized_start=93 + _globals['_VERSIONINGANNOTATION']._serialized_end=146 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/core/__init__.py b/python/xds/core/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/core/v3/__init__.py b/python/xds/core/v3/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/core/v3/authority_pb2.py b/python/xds/core/v3/authority_pb2.py new file mode 100644 index 00000000..447585c9 --- /dev/null +++ b/python/xds/core/v3/authority_pb2.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/core/v3/authority.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/core/v3/authority.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.annotations.v3 import status_pb2 as xds_dot_annotations_dot_v3_dot_status__pb2 +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bxds/core/v3/authority.proto\x12\x0bxds.core.v3\x1a\x1fxds/annotations/v3/status.proto\x1a\x17validate/validate.proto\"\"\n\tAuthority\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x42V\n\x16\x63om.github.xds.core.v3B\x0e\x41uthorityProtoP\x01Z\"github.com/cncf/xds/go/xds/core/v3\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.core.v3.authority_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\026com.github.xds.core.v3B\016AuthorityProtoP\001Z\"github.com/cncf/xds/go/xds/core/v3\322\306\244\341\006\002\010\001' + _globals['_AUTHORITY'].fields_by_name['name']._loaded_options = None + _globals['_AUTHORITY'].fields_by_name['name']._serialized_options = b'\372B\004r\002\020\001' + _globals['_AUTHORITY']._serialized_start=102 + _globals['_AUTHORITY']._serialized_end=136 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/core/v3/cidr_pb2.py b/python/xds/core/v3/cidr_pb2.py new file mode 100644 index 00000000..bc611713 --- /dev/null +++ b/python/xds/core/v3/cidr_pb2.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/core/v3/cidr.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/core/v3/cidr.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.annotations.v3 import status_pb2 as xds_dot_annotations_dot_v3_dot_status__pb2 +from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16xds/core/v3/cidr.proto\x12\x0bxds.core.v3\x1a\x1fxds/annotations/v3/status.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x17validate/validate.proto\"h\n\tCidrRange\x12\x1f\n\x0e\x61\x64\x64ress_prefix\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12:\n\nprefix_len\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x08\xfa\x42\x05*\x03\x18\x80\x01\x42V\n\x16\x63om.github.xds.core.v3B\x0e\x43idrRangeProtoP\x01Z\"github.com/cncf/xds/go/xds/core/v3\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.core.v3.cidr_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\026com.github.xds.core.v3B\016CidrRangeProtoP\001Z\"github.com/cncf/xds/go/xds/core/v3\322\306\244\341\006\002\010\001' + _globals['_CIDRRANGE'].fields_by_name['address_prefix']._loaded_options = None + _globals['_CIDRRANGE'].fields_by_name['address_prefix']._serialized_options = b'\372B\004r\002\020\001' + _globals['_CIDRRANGE'].fields_by_name['prefix_len']._loaded_options = None + _globals['_CIDRRANGE'].fields_by_name['prefix_len']._serialized_options = b'\372B\005*\003\030\200\001' + _globals['_CIDRRANGE']._serialized_start=129 + _globals['_CIDRRANGE']._serialized_end=233 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/core/v3/collection_entry_pb2.py b/python/xds/core/v3/collection_entry_pb2.py new file mode 100644 index 00000000..ac937574 --- /dev/null +++ b/python/xds/core/v3/collection_entry_pb2.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/core/v3/collection_entry.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/core/v3/collection_entry.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 +from xds.annotations.v3 import status_pb2 as xds_dot_annotations_dot_v3_dot_status__pb2 +from xds.core.v3 import resource_locator_pb2 as xds_dot_core_dot_v3_dot_resource__locator__pb2 +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"xds/core/v3/collection_entry.proto\x12\x0bxds.core.v3\x1a\x19google/protobuf/any.proto\x1a\x1fxds/annotations/v3/status.proto\x1a\"xds/core/v3/resource_locator.proto\x1a\x17validate/validate.proto\"\x93\x02\n\x0f\x43ollectionEntry\x12/\n\x07locator\x18\x01 \x01(\x0b\x32\x1c.xds.core.v3.ResourceLocatorH\x00\x12@\n\x0cinline_entry\x18\x02 \x01(\x0b\x32(.xds.core.v3.CollectionEntry.InlineEntryH\x00\x1ar\n\x0bInlineEntry\x12*\n\x04name\x18\x01 \x01(\tB\x1c\xfa\x42\x19r\x17\x32\x15^[0-9a-zA-Z_\\-\\.~:]+$\x12\x0f\n\x07version\x18\x02 \x01(\t\x12&\n\x08resource\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyB\x19\n\x12resource_specifier\x12\x03\xf8\x42\x01\x42\\\n\x16\x63om.github.xds.core.v3B\x14\x43ollectionEntryProtoP\x01Z\"github.com/cncf/xds/go/xds/core/v3\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.core.v3.collection_entry_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\026com.github.xds.core.v3B\024CollectionEntryProtoP\001Z\"github.com/cncf/xds/go/xds/core/v3\322\306\244\341\006\002\010\001' + _globals['_COLLECTIONENTRY_INLINEENTRY'].fields_by_name['name']._loaded_options = None + _globals['_COLLECTIONENTRY_INLINEENTRY'].fields_by_name['name']._serialized_options = b'\372B\031r\0272\025^[0-9a-zA-Z_\\-\\.~:]+$' + _globals['_COLLECTIONENTRY'].oneofs_by_name['resource_specifier']._loaded_options = None + _globals['_COLLECTIONENTRY'].oneofs_by_name['resource_specifier']._serialized_options = b'\370B\001' + _globals['_COLLECTIONENTRY']._serialized_start=173 + _globals['_COLLECTIONENTRY']._serialized_end=448 + _globals['_COLLECTIONENTRY_INLINEENTRY']._serialized_start=307 + _globals['_COLLECTIONENTRY_INLINEENTRY']._serialized_end=421 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/core/v3/context_params_pb2.py b/python/xds/core/v3/context_params_pb2.py new file mode 100644 index 00000000..70763a5d --- /dev/null +++ b/python/xds/core/v3/context_params_pb2.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/core/v3/context_params.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/core/v3/context_params.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.annotations.v3 import status_pb2 as xds_dot_annotations_dot_v3_dot_status__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n xds/core/v3/context_params.proto\x12\x0bxds.core.v3\x1a\x1fxds/annotations/v3/status.proto\"v\n\rContextParams\x12\x36\n\x06params\x18\x01 \x03(\x0b\x32&.xds.core.v3.ContextParams.ParamsEntry\x1a-\n\x0bParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42Z\n\x16\x63om.github.xds.core.v3B\x12\x43ontextParamsProtoP\x01Z\"github.com/cncf/xds/go/xds/core/v3\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.core.v3.context_params_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\026com.github.xds.core.v3B\022ContextParamsProtoP\001Z\"github.com/cncf/xds/go/xds/core/v3\322\306\244\341\006\002\010\001' + _globals['_CONTEXTPARAMS_PARAMSENTRY']._loaded_options = None + _globals['_CONTEXTPARAMS_PARAMSENTRY']._serialized_options = b'8\001' + _globals['_CONTEXTPARAMS']._serialized_start=82 + _globals['_CONTEXTPARAMS']._serialized_end=200 + _globals['_CONTEXTPARAMS_PARAMSENTRY']._serialized_start=155 + _globals['_CONTEXTPARAMS_PARAMSENTRY']._serialized_end=200 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/core/v3/extension_pb2.py b/python/xds/core/v3/extension_pb2.py new file mode 100644 index 00000000..29103821 --- /dev/null +++ b/python/xds/core/v3/extension_pb2.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/core/v3/extension.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/core/v3/extension.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from validate import validate_pb2 as validate_dot_validate__pb2 +from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bxds/core/v3/extension.proto\x12\x0bxds.core.v3\x1a\x17validate/validate.proto\x1a\x19google/protobuf/any.proto\"c\n\x14TypedExtensionConfig\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x34\n\x0ctyped_config\x18\x02 \x01(\x0b\x32\x14.google.protobuf.AnyB\x08\xfa\x42\x05\xa2\x01\x02\x08\x01\x42N\n\x16\x63om.github.xds.core.v3B\x0e\x45xtensionProtoP\x01Z\"github.com/cncf/xds/go/xds/core/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.core.v3.extension_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\026com.github.xds.core.v3B\016ExtensionProtoP\001Z\"github.com/cncf/xds/go/xds/core/v3' + _globals['_TYPEDEXTENSIONCONFIG'].fields_by_name['name']._loaded_options = None + _globals['_TYPEDEXTENSIONCONFIG'].fields_by_name['name']._serialized_options = b'\372B\004r\002\020\001' + _globals['_TYPEDEXTENSIONCONFIG'].fields_by_name['typed_config']._loaded_options = None + _globals['_TYPEDEXTENSIONCONFIG'].fields_by_name['typed_config']._serialized_options = b'\372B\005\242\001\002\010\001' + _globals['_TYPEDEXTENSIONCONFIG']._serialized_start=96 + _globals['_TYPEDEXTENSIONCONFIG']._serialized_end=195 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/core/v3/resource_locator_pb2.py b/python/xds/core/v3/resource_locator_pb2.py new file mode 100644 index 00000000..48c20c31 --- /dev/null +++ b/python/xds/core/v3/resource_locator_pb2.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/core/v3/resource_locator.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/core/v3/resource_locator.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.annotations.v3 import status_pb2 as xds_dot_annotations_dot_v3_dot_status__pb2 +from xds.core.v3 import context_params_pb2 as xds_dot_core_dot_v3_dot_context__params__pb2 +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"xds/core/v3/resource_locator.proto\x12\x0bxds.core.v3\x1a\x1fxds/annotations/v3/status.proto\x1a xds/core/v3/context_params.proto\x1a\x17validate/validate.proto\"\xc2\x03\n\x0fResourceLocator\x12=\n\x06scheme\x18\x01 \x01(\x0e\x32#.xds.core.v3.ResourceLocator.SchemeB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\n\n\x02id\x18\x02 \x01(\t\x12\x11\n\tauthority\x18\x03 \x01(\t\x12\x1e\n\rresource_type\x18\x04 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x33\n\rexact_context\x18\x05 \x01(\x0b\x32\x1a.xds.core.v3.ContextParamsH\x00\x12:\n\ndirectives\x18\x06 \x03(\x0b\x32&.xds.core.v3.ResourceLocator.Directive\x1a|\n\tDirective\x12+\n\x03\x61lt\x18\x01 \x01(\x0b\x32\x1c.xds.core.v3.ResourceLocatorH\x00\x12\x30\n\x05\x65ntry\x18\x02 \x01(\tB\x1f\xfa\x42\x1cr\x1a\x10\x01\x32\x16^[0-9a-zA-Z_\\-\\./~:]+$H\x00\x42\x10\n\tdirective\x12\x03\xf8\x42\x01\"\'\n\x06Scheme\x12\t\n\x05XDSTP\x10\x00\x12\x08\n\x04HTTP\x10\x01\x12\x08\n\x04\x46ILE\x10\x02\x42\x19\n\x17\x63ontext_param_specifierB\\\n\x16\x63om.github.xds.core.v3B\x14ResourceLocatorProtoP\x01Z\"github.com/cncf/xds/go/xds/core/v3\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.core.v3.resource_locator_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\026com.github.xds.core.v3B\024ResourceLocatorProtoP\001Z\"github.com/cncf/xds/go/xds/core/v3\322\306\244\341\006\002\010\001' + _globals['_RESOURCELOCATOR_DIRECTIVE'].oneofs_by_name['directive']._loaded_options = None + _globals['_RESOURCELOCATOR_DIRECTIVE'].oneofs_by_name['directive']._serialized_options = b'\370B\001' + _globals['_RESOURCELOCATOR_DIRECTIVE'].fields_by_name['entry']._loaded_options = None + _globals['_RESOURCELOCATOR_DIRECTIVE'].fields_by_name['entry']._serialized_options = b'\372B\034r\032\020\0012\026^[0-9a-zA-Z_\\-\\./~:]+$' + _globals['_RESOURCELOCATOR'].fields_by_name['scheme']._loaded_options = None + _globals['_RESOURCELOCATOR'].fields_by_name['scheme']._serialized_options = b'\372B\005\202\001\002\020\001' + _globals['_RESOURCELOCATOR'].fields_by_name['resource_type']._loaded_options = None + _globals['_RESOURCELOCATOR'].fields_by_name['resource_type']._serialized_options = b'\372B\004r\002\020\001' + _globals['_RESOURCELOCATOR']._serialized_start=144 + _globals['_RESOURCELOCATOR']._serialized_end=594 + _globals['_RESOURCELOCATOR_DIRECTIVE']._serialized_start=402 + _globals['_RESOURCELOCATOR_DIRECTIVE']._serialized_end=526 + _globals['_RESOURCELOCATOR_SCHEME']._serialized_start=528 + _globals['_RESOURCELOCATOR_SCHEME']._serialized_end=567 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/core/v3/resource_name_pb2.py b/python/xds/core/v3/resource_name_pb2.py new file mode 100644 index 00000000..f8903035 --- /dev/null +++ b/python/xds/core/v3/resource_name_pb2.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/core/v3/resource_name.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/core/v3/resource_name.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.annotations.v3 import status_pb2 as xds_dot_annotations_dot_v3_dot_status__pb2 +from xds.core.v3 import context_params_pb2 as xds_dot_core_dot_v3_dot_context__params__pb2 +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fxds/core/v3/resource_name.proto\x12\x0bxds.core.v3\x1a\x1fxds/annotations/v3/status.proto\x1a xds/core/v3/context_params.proto\x1a\x17validate/validate.proto\"z\n\x0cResourceName\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\x12\x1e\n\rresource_type\x18\x03 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12+\n\x07\x63ontext\x18\x04 \x01(\x0b\x32\x1a.xds.core.v3.ContextParamsBY\n\x16\x63om.github.xds.core.v3B\x11ResourceNameProtoP\x01Z\"github.com/cncf/xds/go/xds/core/v3\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.core.v3.resource_name_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\026com.github.xds.core.v3B\021ResourceNameProtoP\001Z\"github.com/cncf/xds/go/xds/core/v3\322\306\244\341\006\002\010\001' + _globals['_RESOURCENAME'].fields_by_name['resource_type']._loaded_options = None + _globals['_RESOURCENAME'].fields_by_name['resource_type']._serialized_options = b'\372B\004r\002\020\001' + _globals['_RESOURCENAME']._serialized_start=140 + _globals['_RESOURCENAME']._serialized_end=262 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/core/v3/resource_pb2.py b/python/xds/core/v3/resource_pb2.py new file mode 100644 index 00000000..b8228f41 --- /dev/null +++ b/python/xds/core/v3/resource_pb2.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/core/v3/resource.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/core/v3/resource.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 +from xds.annotations.v3 import status_pb2 as xds_dot_annotations_dot_v3_dot_status__pb2 +from xds.core.v3 import resource_name_pb2 as xds_dot_core_dot_v3_dot_resource__name__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1axds/core/v3/resource.proto\x12\x0bxds.core.v3\x1a\x19google/protobuf/any.proto\x1a\x1fxds/annotations/v3/status.proto\x1a\x1fxds/core/v3/resource_name.proto\"l\n\x08Resource\x12\'\n\x04name\x18\x01 \x01(\x0b\x32\x19.xds.core.v3.ResourceName\x12\x0f\n\x07version\x18\x02 \x01(\t\x12&\n\x08resource\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyBU\n\x16\x63om.github.xds.core.v3B\rResourceProtoP\x01Z\"github.com/cncf/xds/go/xds/core/v3\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.core.v3.resource_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\026com.github.xds.core.v3B\rResourceProtoP\001Z\"github.com/cncf/xds/go/xds/core/v3\322\306\244\341\006\002\010\001' + _globals['_RESOURCE']._serialized_start=136 + _globals['_RESOURCE']._serialized_end=244 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/data/__init__.py b/python/xds/data/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/data/orca/__init__.py b/python/xds/data/orca/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/data/orca/v3/__init__.py b/python/xds/data/orca/v3/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/data/orca/v3/orca_load_report_pb2.py b/python/xds/data/orca/v3/orca_load_report_pb2.py new file mode 100644 index 00000000..c42aeaf5 --- /dev/null +++ b/python/xds/data/orca/v3/orca_load_report_pb2.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/data/orca/v3/orca_load_report.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/data/orca/v3/orca_load_report.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'xds/data/orca/v3/orca_load_report.proto\x12\x10xds.data.orca.v3\x1a\x17validate/validate.proto\"\x89\x05\n\x0eOrcaLoadReport\x12\'\n\x0f\x63pu_utilization\x18\x01 \x01(\x01\x42\x0e\xfa\x42\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00\x12\x30\n\x0fmem_utilization\x18\x02 \x01(\x01\x42\x17\xfa\x42\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\xf0?)\x00\x00\x00\x00\x00\x00\x00\x00\x12\x0f\n\x03rps\x18\x03 \x01(\x04\x42\x02\x18\x01\x12G\n\x0crequest_cost\x18\x04 \x03(\x0b\x32\x31.xds.data.orca.v3.OrcaLoadReport.RequestCostEntry\x12\x64\n\x0butilization\x18\x05 \x03(\x0b\x32\x31.xds.data.orca.v3.OrcaLoadReport.UtilizationEntryB\x1c\xfa\x42\x19\x9a\x01\x16*\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\xf0?)\x00\x00\x00\x00\x00\x00\x00\x00\x12&\n\x0erps_fractional\x18\x06 \x01(\x01\x42\x0e\xfa\x42\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00\x12\x1b\n\x03\x65ps\x18\x07 \x01(\x01\x42\x0e\xfa\x42\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00\x12I\n\rnamed_metrics\x18\x08 \x03(\x0b\x32\x32.xds.data.orca.v3.OrcaLoadReport.NamedMetricsEntry\x12/\n\x17\x61pplication_utilization\x18\t \x01(\x01\x42\x0e\xfa\x42\x0b\x12\t)\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x32\n\x10RequestCostEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x1a\x32\n\x10UtilizationEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x1a\x33\n\x11NamedMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x01:\x02\x38\x01\x42]\n\x1b\x63om.github.xds.data.orca.v3B\x13OrcaLoadReportProtoP\x01Z\'github.com/cncf/xds/go/xds/data/orca/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.data.orca.v3.orca_load_report_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\033com.github.xds.data.orca.v3B\023OrcaLoadReportProtoP\001Z\'github.com/cncf/xds/go/xds/data/orca/v3' + _globals['_ORCALOADREPORT_REQUESTCOSTENTRY']._loaded_options = None + _globals['_ORCALOADREPORT_REQUESTCOSTENTRY']._serialized_options = b'8\001' + _globals['_ORCALOADREPORT_UTILIZATIONENTRY']._loaded_options = None + _globals['_ORCALOADREPORT_UTILIZATIONENTRY']._serialized_options = b'8\001' + _globals['_ORCALOADREPORT_NAMEDMETRICSENTRY']._loaded_options = None + _globals['_ORCALOADREPORT_NAMEDMETRICSENTRY']._serialized_options = b'8\001' + _globals['_ORCALOADREPORT'].fields_by_name['cpu_utilization']._loaded_options = None + _globals['_ORCALOADREPORT'].fields_by_name['cpu_utilization']._serialized_options = b'\372B\013\022\t)\000\000\000\000\000\000\000\000' + _globals['_ORCALOADREPORT'].fields_by_name['mem_utilization']._loaded_options = None + _globals['_ORCALOADREPORT'].fields_by_name['mem_utilization']._serialized_options = b'\372B\024\022\022\031\000\000\000\000\000\000\360?)\000\000\000\000\000\000\000\000' + _globals['_ORCALOADREPORT'].fields_by_name['rps']._loaded_options = None + _globals['_ORCALOADREPORT'].fields_by_name['rps']._serialized_options = b'\030\001' + _globals['_ORCALOADREPORT'].fields_by_name['utilization']._loaded_options = None + _globals['_ORCALOADREPORT'].fields_by_name['utilization']._serialized_options = b'\372B\031\232\001\026*\024\022\022\031\000\000\000\000\000\000\360?)\000\000\000\000\000\000\000\000' + _globals['_ORCALOADREPORT'].fields_by_name['rps_fractional']._loaded_options = None + _globals['_ORCALOADREPORT'].fields_by_name['rps_fractional']._serialized_options = b'\372B\013\022\t)\000\000\000\000\000\000\000\000' + _globals['_ORCALOADREPORT'].fields_by_name['eps']._loaded_options = None + _globals['_ORCALOADREPORT'].fields_by_name['eps']._serialized_options = b'\372B\013\022\t)\000\000\000\000\000\000\000\000' + _globals['_ORCALOADREPORT'].fields_by_name['application_utilization']._loaded_options = None + _globals['_ORCALOADREPORT'].fields_by_name['application_utilization']._serialized_options = b'\372B\013\022\t)\000\000\000\000\000\000\000\000' + _globals['_ORCALOADREPORT']._serialized_start=87 + _globals['_ORCALOADREPORT']._serialized_end=736 + _globals['_ORCALOADREPORT_REQUESTCOSTENTRY']._serialized_start=581 + _globals['_ORCALOADREPORT_REQUESTCOSTENTRY']._serialized_end=631 + _globals['_ORCALOADREPORT_UTILIZATIONENTRY']._serialized_start=633 + _globals['_ORCALOADREPORT_UTILIZATIONENTRY']._serialized_end=683 + _globals['_ORCALOADREPORT_NAMEDMETRICSENTRY']._serialized_start=685 + _globals['_ORCALOADREPORT_NAMEDMETRICSENTRY']._serialized_end=736 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/service/__init__.py b/python/xds/service/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/service/orca/__init__.py b/python/xds/service/orca/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/service/orca/v3/__init__.py b/python/xds/service/orca/v3/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/service/orca/v3/orca_pb2.py b/python/xds/service/orca/v3/orca_pb2.py new file mode 100644 index 00000000..9109ffb4 --- /dev/null +++ b/python/xds/service/orca/v3/orca_pb2.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/service/orca/v3/orca.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/service/orca/v3/orca.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.data.orca.v3 import orca_load_report_pb2 as xds_dot_data_dot_orca_dot_v3_dot_orca__load__report__pb2 +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1exds/service/orca/v3/orca.proto\x12\x13xds.service.orca.v3\x1a\'xds/data/orca/v3/orca_load_report.proto\x1a\x1egoogle/protobuf/duration.proto\"g\n\x15OrcaLoadReportRequest\x12\x32\n\x0freport_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1a\n\x12request_cost_names\x18\x02 \x03(\t2u\n\x0eOpenRcaService\x12\x63\n\x11StreamCoreMetrics\x12*.xds.service.orca.v3.OrcaLoadReportRequest\x1a .xds.data.orca.v3.OrcaLoadReport0\x01\x42Y\n\x1e\x63om.github.xds.service.orca.v3B\tOrcaProtoP\x01Z*github.com/cncf/xds/go/xds/service/orca/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.service.orca.v3.orca_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\036com.github.xds.service.orca.v3B\tOrcaProtoP\001Z*github.com/cncf/xds/go/xds/service/orca/v3' + _globals['_ORCALOADREPORTREQUEST']._serialized_start=128 + _globals['_ORCALOADREPORTREQUEST']._serialized_end=231 + _globals['_OPENRCASERVICE']._serialized_start=233 + _globals['_OPENRCASERVICE']._serialized_end=350 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/type/__init__.py b/python/xds/type/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/type/matcher/__init__.py b/python/xds/type/matcher/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/type/matcher/v3/__init__.py b/python/xds/type/matcher/v3/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/type/matcher/v3/cel_pb2.py b/python/xds/type/matcher/v3/cel_pb2.py new file mode 100644 index 00000000..6fef29d6 --- /dev/null +++ b/python/xds/type/matcher/v3/cel_pb2.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/type/matcher/v3/cel.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/type/matcher/v3/cel.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.type.v3 import cel_pb2 as xds_dot_type_dot_v3_dot_cel__pb2 +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dxds/type/matcher/v3/cel.proto\x12\x13xds.type.matcher.v3\x1a\x15xds/type/v3/cel.proto\x1a\x17validate/validate.proto\"[\n\nCelMatcher\x12\x38\n\nexpr_match\x18\x01 \x01(\x0b\x32\x1a.xds.type.v3.CelExpressionB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\tBX\n\x1e\x63om.github.xds.type.matcher.v3B\x08\x43\x65lProtoP\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.type.matcher.v3.cel_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\036com.github.xds.type.matcher.v3B\010CelProtoP\001Z*github.com/cncf/xds/go/xds/type/matcher/v3' + _globals['_CELMATCHER'].fields_by_name['expr_match']._loaded_options = None + _globals['_CELMATCHER'].fields_by_name['expr_match']._serialized_options = b'\372B\005\212\001\002\020\001' + _globals['_CELMATCHER']._serialized_start=102 + _globals['_CELMATCHER']._serialized_end=193 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/type/matcher/v3/domain_pb2.py b/python/xds/type/matcher/v3/domain_pb2.py new file mode 100644 index 00000000..5408949f --- /dev/null +++ b/python/xds/type/matcher/v3/domain_pb2.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/type/matcher/v3/domain.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/type/matcher/v3/domain.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.annotations.v3 import status_pb2 as xds_dot_annotations_dot_v3_dot_status__pb2 +from xds.type.matcher.v3 import matcher_pb2 as xds_dot_type_dot_matcher_dot_v3_dot_matcher__pb2 +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n xds/type/matcher/v3/domain.proto\x12\x13xds.type.matcher.v3\x1a\x1fxds/annotations/v3/status.proto\x1a!xds/type/matcher/v3/matcher.proto\x1a\x17validate/validate.proto\"\xc6\x01\n\x11ServerNameMatcher\x12M\n\x0f\x64omain_matchers\x18\x01 \x03(\x0b\x32\x34.xds.type.matcher.v3.ServerNameMatcher.DomainMatcher\x1a\x62\n\rDomainMatcher\x12\x19\n\x07\x64omains\x18\x01 \x03(\tB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12\x36\n\x08on_match\x18\x02 \x01(\x0b\x32$.xds.type.matcher.v3.Matcher.OnMatchBn\n\x1e\x63om.github.xds.type.matcher.v3B\x16ServerNameMatcherProtoP\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.type.matcher.v3.domain_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\036com.github.xds.type.matcher.v3B\026ServerNameMatcherProtoP\001Z*github.com/cncf/xds/go/xds/type/matcher/v3\322\306\244\341\006\002\010\001' + _globals['_SERVERNAMEMATCHER_DOMAINMATCHER'].fields_by_name['domains']._loaded_options = None + _globals['_SERVERNAMEMATCHER_DOMAINMATCHER'].fields_by_name['domains']._serialized_options = b'\372B\005\222\001\002\010\001' + _globals['_SERVERNAMEMATCHER']._serialized_start=151 + _globals['_SERVERNAMEMATCHER']._serialized_end=349 + _globals['_SERVERNAMEMATCHER_DOMAINMATCHER']._serialized_start=251 + _globals['_SERVERNAMEMATCHER_DOMAINMATCHER']._serialized_end=349 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/type/matcher/v3/http_inputs_pb2.py b/python/xds/type/matcher/v3/http_inputs_pb2.py new file mode 100644 index 00000000..3b1c46e4 --- /dev/null +++ b/python/xds/type/matcher/v3/http_inputs_pb2.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/type/matcher/v3/http_inputs.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/type/matcher/v3/http_inputs.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%xds/type/matcher/v3/http_inputs.proto\x12\x13xds.type.matcher.v3\"\x1d\n\x1bHttpAttributesCelMatchInputB_\n\x1e\x63om.github.xds.type.matcher.v3B\x0fHttpInputsProtoP\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.type.matcher.v3.http_inputs_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\036com.github.xds.type.matcher.v3B\017HttpInputsProtoP\001Z*github.com/cncf/xds/go/xds/type/matcher/v3' + _globals['_HTTPATTRIBUTESCELMATCHINPUT']._serialized_start=62 + _globals['_HTTPATTRIBUTESCELMATCHINPUT']._serialized_end=91 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/type/matcher/v3/ip_pb2.py b/python/xds/type/matcher/v3/ip_pb2.py new file mode 100644 index 00000000..b6659a7d --- /dev/null +++ b/python/xds/type/matcher/v3/ip_pb2.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/type/matcher/v3/ip.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/type/matcher/v3/ip.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.annotations.v3 import status_pb2 as xds_dot_annotations_dot_v3_dot_status__pb2 +from xds.core.v3 import cidr_pb2 as xds_dot_core_dot_v3_dot_cidr__pb2 +from xds.type.matcher.v3 import matcher_pb2 as xds_dot_type_dot_matcher_dot_v3_dot_matcher__pb2 +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cxds/type/matcher/v3/ip.proto\x12\x13xds.type.matcher.v3\x1a\x1fxds/annotations/v3/status.proto\x1a\x16xds/core/v3/cidr.proto\x1a!xds/type/matcher/v3/matcher.proto\x1a\x17validate/validate.proto\"\xe2\x01\n\tIPMatcher\x12\x45\n\x0erange_matchers\x18\x01 \x03(\x0b\x32-.xds.type.matcher.v3.IPMatcher.IPRangeMatcher\x1a\x8d\x01\n\x0eIPRangeMatcher\x12\x30\n\x06ranges\x18\x01 \x03(\x0b\x32\x16.xds.core.v3.CidrRangeB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12\x36\n\x08on_match\x18\x02 \x01(\x0b\x32$.xds.type.matcher.v3.Matcher.OnMatch\x12\x11\n\texclusive\x18\x03 \x01(\x08\x42\x66\n\x1e\x63om.github.xds.type.matcher.v3B\x0eIPMatcherProtoP\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.type.matcher.v3.ip_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\036com.github.xds.type.matcher.v3B\016IPMatcherProtoP\001Z*github.com/cncf/xds/go/xds/type/matcher/v3\322\306\244\341\006\002\010\001' + _globals['_IPMATCHER_IPRANGEMATCHER'].fields_by_name['ranges']._loaded_options = None + _globals['_IPMATCHER_IPRANGEMATCHER'].fields_by_name['ranges']._serialized_options = b'\372B\005\222\001\002\010\001' + _globals['_IPMATCHER']._serialized_start=171 + _globals['_IPMATCHER']._serialized_end=397 + _globals['_IPMATCHER_IPRANGEMATCHER']._serialized_start=256 + _globals['_IPMATCHER_IPRANGEMATCHER']._serialized_end=397 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/type/matcher/v3/matcher_pb2.py b/python/xds/type/matcher/v3/matcher_pb2.py new file mode 100644 index 00000000..51026440 --- /dev/null +++ b/python/xds/type/matcher/v3/matcher_pb2.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/type/matcher/v3/matcher.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/type/matcher/v3/matcher.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.core.v3 import extension_pb2 as xds_dot_core_dot_v3_dot_extension__pb2 +from xds.type.matcher.v3 import string_pb2 as xds_dot_type_dot_matcher_dot_v3_dot_string__pb2 +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!xds/type/matcher/v3/matcher.proto\x12\x13xds.type.matcher.v3\x1a\x1bxds/core/v3/extension.proto\x1a xds/type/matcher/v3/string.proto\x1a\x17validate/validate.proto\"\xff\r\n\x07Matcher\x12@\n\x0cmatcher_list\x18\x01 \x01(\x0b\x32(.xds.type.matcher.v3.Matcher.MatcherListH\x00\x12@\n\x0cmatcher_tree\x18\x02 \x01(\x0b\x32(.xds.type.matcher.v3.Matcher.MatcherTreeH\x00\x12\x39\n\x0bon_no_match\x18\x03 \x01(\x0b\x32$.xds.type.matcher.v3.Matcher.OnMatch\x1a\x80\x01\n\x07OnMatch\x12/\n\x07matcher\x18\x01 \x01(\x0b\x32\x1c.xds.type.matcher.v3.MatcherH\x00\x12\x33\n\x06\x61\x63tion\x18\x02 \x01(\x0b\x32!.xds.core.v3.TypedExtensionConfigH\x00\x42\x0f\n\x08on_match\x12\x03\xf8\x42\x01\x1a\xb9\x07\n\x0bMatcherList\x12Q\n\x08matchers\x18\x01 \x03(\x0b\x32\x35.xds.type.matcher.v3.Matcher.MatcherList.FieldMatcherB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x1a\xb2\x05\n\tPredicate\x12^\n\x10single_predicate\x18\x01 \x01(\x0b\x32\x42.xds.type.matcher.v3.Matcher.MatcherList.Predicate.SinglePredicateH\x00\x12V\n\nor_matcher\x18\x02 \x01(\x0b\x32@.xds.type.matcher.v3.Matcher.MatcherList.Predicate.PredicateListH\x00\x12W\n\x0b\x61nd_matcher\x18\x03 \x01(\x0b\x32@.xds.type.matcher.v3.Matcher.MatcherList.Predicate.PredicateListH\x00\x12I\n\x0bnot_matcher\x18\x04 \x01(\x0b\x32\x32.xds.type.matcher.v3.Matcher.MatcherList.PredicateH\x00\x1a\xd3\x01\n\x0fSinglePredicate\x12:\n\x05input\x18\x01 \x01(\x0b\x32!.xds.core.v3.TypedExtensionConfigB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x39\n\x0bvalue_match\x18\x02 \x01(\x0b\x32\".xds.type.matcher.v3.StringMatcherH\x00\x12\x39\n\x0c\x63ustom_match\x18\x03 \x01(\x0b\x32!.xds.core.v3.TypedExtensionConfigH\x00\x42\x0e\n\x07matcher\x12\x03\xf8\x42\x01\x1a`\n\rPredicateList\x12O\n\tpredicate\x18\x01 \x03(\x0b\x32\x32.xds.type.matcher.v3.Matcher.MatcherList.PredicateB\x08\xfa\x42\x05\x92\x01\x02\x08\x02\x42\x11\n\nmatch_type\x12\x03\xf8\x42\x01\x1a\xa1\x01\n\x0c\x46ieldMatcher\x12O\n\tpredicate\x18\x01 \x01(\x0b\x32\x32.xds.type.matcher.v3.Matcher.MatcherList.PredicateB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12@\n\x08on_match\x18\x02 \x01(\x0b\x32$.xds.type.matcher.v3.Matcher.OnMatchB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x1a\xe5\x03\n\x0bMatcherTree\x12:\n\x05input\x18\x01 \x01(\x0b\x32!.xds.core.v3.TypedExtensionConfigB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12L\n\x0f\x65xact_match_map\x18\x02 \x01(\x0b\x32\x31.xds.type.matcher.v3.Matcher.MatcherTree.MatchMapH\x00\x12M\n\x10prefix_match_map\x18\x03 \x01(\x0b\x32\x31.xds.type.matcher.v3.Matcher.MatcherTree.MatchMapH\x00\x12\x39\n\x0c\x63ustom_match\x18\x04 \x01(\x0b\x32!.xds.core.v3.TypedExtensionConfigH\x00\x1a\xaf\x01\n\x08MatchMap\x12Q\n\x03map\x18\x01 \x03(\x0b\x32:.xds.type.matcher.v3.Matcher.MatcherTree.MatchMap.MapEntryB\x08\xfa\x42\x05\x9a\x01\x02\x08\x01\x1aP\n\x08MapEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32$.xds.type.matcher.v3.Matcher.OnMatch:\x02\x38\x01\x42\x10\n\ttree_type\x12\x03\xf8\x42\x01\x42\x0e\n\x0cmatcher_typeB\\\n\x1e\x63om.github.xds.type.matcher.v3B\x0cMatcherProtoP\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.type.matcher.v3.matcher_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\036com.github.xds.type.matcher.v3B\014MatcherProtoP\001Z*github.com/cncf/xds/go/xds/type/matcher/v3' + _globals['_MATCHER_ONMATCH'].oneofs_by_name['on_match']._loaded_options = None + _globals['_MATCHER_ONMATCH'].oneofs_by_name['on_match']._serialized_options = b'\370B\001' + _globals['_MATCHER_MATCHERLIST_PREDICATE_SINGLEPREDICATE'].oneofs_by_name['matcher']._loaded_options = None + _globals['_MATCHER_MATCHERLIST_PREDICATE_SINGLEPREDICATE'].oneofs_by_name['matcher']._serialized_options = b'\370B\001' + _globals['_MATCHER_MATCHERLIST_PREDICATE_SINGLEPREDICATE'].fields_by_name['input']._loaded_options = None + _globals['_MATCHER_MATCHERLIST_PREDICATE_SINGLEPREDICATE'].fields_by_name['input']._serialized_options = b'\372B\005\212\001\002\020\001' + _globals['_MATCHER_MATCHERLIST_PREDICATE_PREDICATELIST'].fields_by_name['predicate']._loaded_options = None + _globals['_MATCHER_MATCHERLIST_PREDICATE_PREDICATELIST'].fields_by_name['predicate']._serialized_options = b'\372B\005\222\001\002\010\002' + _globals['_MATCHER_MATCHERLIST_PREDICATE'].oneofs_by_name['match_type']._loaded_options = None + _globals['_MATCHER_MATCHERLIST_PREDICATE'].oneofs_by_name['match_type']._serialized_options = b'\370B\001' + _globals['_MATCHER_MATCHERLIST_FIELDMATCHER'].fields_by_name['predicate']._loaded_options = None + _globals['_MATCHER_MATCHERLIST_FIELDMATCHER'].fields_by_name['predicate']._serialized_options = b'\372B\005\212\001\002\020\001' + _globals['_MATCHER_MATCHERLIST_FIELDMATCHER'].fields_by_name['on_match']._loaded_options = None + _globals['_MATCHER_MATCHERLIST_FIELDMATCHER'].fields_by_name['on_match']._serialized_options = b'\372B\005\212\001\002\020\001' + _globals['_MATCHER_MATCHERLIST'].fields_by_name['matchers']._loaded_options = None + _globals['_MATCHER_MATCHERLIST'].fields_by_name['matchers']._serialized_options = b'\372B\005\222\001\002\010\001' + _globals['_MATCHER_MATCHERTREE_MATCHMAP_MAPENTRY']._loaded_options = None + _globals['_MATCHER_MATCHERTREE_MATCHMAP_MAPENTRY']._serialized_options = b'8\001' + _globals['_MATCHER_MATCHERTREE_MATCHMAP'].fields_by_name['map']._loaded_options = None + _globals['_MATCHER_MATCHERTREE_MATCHMAP'].fields_by_name['map']._serialized_options = b'\372B\005\232\001\002\010\001' + _globals['_MATCHER_MATCHERTREE'].oneofs_by_name['tree_type']._loaded_options = None + _globals['_MATCHER_MATCHERTREE'].oneofs_by_name['tree_type']._serialized_options = b'\370B\001' + _globals['_MATCHER_MATCHERTREE'].fields_by_name['input']._loaded_options = None + _globals['_MATCHER_MATCHERTREE'].fields_by_name['input']._serialized_options = b'\372B\005\212\001\002\020\001' + _globals['_MATCHER']._serialized_start=147 + _globals['_MATCHER']._serialized_end=1938 + _globals['_MATCHER_ONMATCH']._serialized_start=350 + _globals['_MATCHER_ONMATCH']._serialized_end=478 + _globals['_MATCHER_MATCHERLIST']._serialized_start=481 + _globals['_MATCHER_MATCHERLIST']._serialized_end=1434 + _globals['_MATCHER_MATCHERLIST_PREDICATE']._serialized_start=580 + _globals['_MATCHER_MATCHERLIST_PREDICATE']._serialized_end=1270 + _globals['_MATCHER_MATCHERLIST_PREDICATE_SINGLEPREDICATE']._serialized_start=942 + _globals['_MATCHER_MATCHERLIST_PREDICATE_SINGLEPREDICATE']._serialized_end=1153 + _globals['_MATCHER_MATCHERLIST_PREDICATE_PREDICATELIST']._serialized_start=1155 + _globals['_MATCHER_MATCHERLIST_PREDICATE_PREDICATELIST']._serialized_end=1251 + _globals['_MATCHER_MATCHERLIST_FIELDMATCHER']._serialized_start=1273 + _globals['_MATCHER_MATCHERLIST_FIELDMATCHER']._serialized_end=1434 + _globals['_MATCHER_MATCHERTREE']._serialized_start=1437 + _globals['_MATCHER_MATCHERTREE']._serialized_end=1922 + _globals['_MATCHER_MATCHERTREE_MATCHMAP']._serialized_start=1729 + _globals['_MATCHER_MATCHERTREE_MATCHMAP']._serialized_end=1904 + _globals['_MATCHER_MATCHERTREE_MATCHMAP_MAPENTRY']._serialized_start=1824 + _globals['_MATCHER_MATCHERTREE_MATCHMAP_MAPENTRY']._serialized_end=1904 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/type/matcher/v3/range_pb2.py b/python/xds/type/matcher/v3/range_pb2.py new file mode 100644 index 00000000..bbc0f112 --- /dev/null +++ b/python/xds/type/matcher/v3/range_pb2.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/type/matcher/v3/range.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/type/matcher/v3/range.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.type.v3 import range_pb2 as xds_dot_type_dot_v3_dot_range__pb2 +from xds.type.matcher.v3 import matcher_pb2 as xds_dot_type_dot_matcher_dot_v3_dot_matcher__pb2 +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fxds/type/matcher/v3/range.proto\x12\x13xds.type.matcher.v3\x1a\x17xds/type/v3/range.proto\x1a!xds/type/matcher/v3/matcher.proto\x1a\x17validate/validate.proto\"\xdb\x01\n\x11Int64RangeMatcher\x12K\n\x0erange_matchers\x18\x01 \x03(\x0b\x32\x33.xds.type.matcher.v3.Int64RangeMatcher.RangeMatcher\x1ay\n\x0cRangeMatcher\x12\x31\n\x06ranges\x18\x01 \x03(\x0b\x32\x17.xds.type.v3.Int64RangeB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12\x36\n\x08on_match\x18\x02 \x01(\x0b\x32$.xds.type.matcher.v3.Matcher.OnMatch\"\xdb\x01\n\x11Int32RangeMatcher\x12K\n\x0erange_matchers\x18\x01 \x03(\x0b\x32\x33.xds.type.matcher.v3.Int32RangeMatcher.RangeMatcher\x1ay\n\x0cRangeMatcher\x12\x31\n\x06ranges\x18\x01 \x03(\x0b\x32\x17.xds.type.v3.Int32RangeB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12\x36\n\x08on_match\x18\x02 \x01(\x0b\x32$.xds.type.matcher.v3.Matcher.OnMatch\"\xde\x01\n\x12\x44oubleRangeMatcher\x12L\n\x0erange_matchers\x18\x01 \x03(\x0b\x32\x34.xds.type.matcher.v3.DoubleRangeMatcher.RangeMatcher\x1az\n\x0cRangeMatcher\x12\x32\n\x06ranges\x18\x01 \x03(\x0b\x32\x18.xds.type.v3.DoubleRangeB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12\x36\n\x08on_match\x18\x02 \x01(\x0b\x32$.xds.type.matcher.v3.Matcher.OnMatchBZ\n\x1e\x63om.github.xds.type.matcher.v3B\nRangeProtoP\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.type.matcher.v3.range_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\036com.github.xds.type.matcher.v3B\nRangeProtoP\001Z*github.com/cncf/xds/go/xds/type/matcher/v3' + _globals['_INT64RANGEMATCHER_RANGEMATCHER'].fields_by_name['ranges']._loaded_options = None + _globals['_INT64RANGEMATCHER_RANGEMATCHER'].fields_by_name['ranges']._serialized_options = b'\372B\005\222\001\002\010\001' + _globals['_INT32RANGEMATCHER_RANGEMATCHER'].fields_by_name['ranges']._loaded_options = None + _globals['_INT32RANGEMATCHER_RANGEMATCHER'].fields_by_name['ranges']._serialized_options = b'\372B\005\222\001\002\010\001' + _globals['_DOUBLERANGEMATCHER_RANGEMATCHER'].fields_by_name['ranges']._loaded_options = None + _globals['_DOUBLERANGEMATCHER_RANGEMATCHER'].fields_by_name['ranges']._serialized_options = b'\372B\005\222\001\002\010\001' + _globals['_INT64RANGEMATCHER']._serialized_start=142 + _globals['_INT64RANGEMATCHER']._serialized_end=361 + _globals['_INT64RANGEMATCHER_RANGEMATCHER']._serialized_start=240 + _globals['_INT64RANGEMATCHER_RANGEMATCHER']._serialized_end=361 + _globals['_INT32RANGEMATCHER']._serialized_start=364 + _globals['_INT32RANGEMATCHER']._serialized_end=583 + _globals['_INT32RANGEMATCHER_RANGEMATCHER']._serialized_start=462 + _globals['_INT32RANGEMATCHER_RANGEMATCHER']._serialized_end=583 + _globals['_DOUBLERANGEMATCHER']._serialized_start=586 + _globals['_DOUBLERANGEMATCHER']._serialized_end=808 + _globals['_DOUBLERANGEMATCHER_RANGEMATCHER']._serialized_start=686 + _globals['_DOUBLERANGEMATCHER_RANGEMATCHER']._serialized_end=808 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/type/matcher/v3/regex_pb2.py b/python/xds/type/matcher/v3/regex_pb2.py new file mode 100644 index 00000000..f66d5c1a --- /dev/null +++ b/python/xds/type/matcher/v3/regex_pb2.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/type/matcher/v3/regex.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/type/matcher/v3/regex.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fxds/type/matcher/v3/regex.proto\x12\x13xds.type.matcher.v3\x1a\x17validate/validate.proto\"\x94\x01\n\x0cRegexMatcher\x12K\n\ngoogle_re2\x18\x01 \x01(\x0b\x32+.xds.type.matcher.v3.RegexMatcher.GoogleRE2B\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00\x12\x16\n\x05regex\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x1a\x0b\n\tGoogleRE2B\x12\n\x0b\x65ngine_type\x12\x03\xf8\x42\x01\x42Z\n\x1e\x63om.github.xds.type.matcher.v3B\nRegexProtoP\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.type.matcher.v3.regex_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\036com.github.xds.type.matcher.v3B\nRegexProtoP\001Z*github.com/cncf/xds/go/xds/type/matcher/v3' + _globals['_REGEXMATCHER'].oneofs_by_name['engine_type']._loaded_options = None + _globals['_REGEXMATCHER'].oneofs_by_name['engine_type']._serialized_options = b'\370B\001' + _globals['_REGEXMATCHER'].fields_by_name['google_re2']._loaded_options = None + _globals['_REGEXMATCHER'].fields_by_name['google_re2']._serialized_options = b'\372B\005\212\001\002\020\001' + _globals['_REGEXMATCHER'].fields_by_name['regex']._loaded_options = None + _globals['_REGEXMATCHER'].fields_by_name['regex']._serialized_options = b'\372B\004r\002\020\001' + _globals['_REGEXMATCHER']._serialized_start=82 + _globals['_REGEXMATCHER']._serialized_end=230 + _globals['_REGEXMATCHER_GOOGLERE2']._serialized_start=199 + _globals['_REGEXMATCHER_GOOGLERE2']._serialized_end=210 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/type/matcher/v3/string_pb2.py b/python/xds/type/matcher/v3/string_pb2.py new file mode 100644 index 00000000..6424a8fd --- /dev/null +++ b/python/xds/type/matcher/v3/string_pb2.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/type/matcher/v3/string.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/type/matcher/v3/string.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from xds.core.v3 import extension_pb2 as xds_dot_core_dot_v3_dot_extension__pb2 +from xds.type.matcher.v3 import regex_pb2 as xds_dot_type_dot_matcher_dot_v3_dot_regex__pb2 +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n xds/type/matcher/v3/string.proto\x12\x13xds.type.matcher.v3\x1a\x1bxds/core/v3/extension.proto\x1a\x1fxds/type/matcher/v3/regex.proto\x1a\x17validate/validate.proto\"\x96\x02\n\rStringMatcher\x12\x0f\n\x05\x65xact\x18\x01 \x01(\tH\x00\x12\x19\n\x06prefix\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00\x12\x19\n\x06suffix\x18\x03 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00\x12\x41\n\nsafe_regex\x18\x05 \x01(\x0b\x32!.xds.type.matcher.v3.RegexMatcherB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00\x12\x1b\n\x08\x63ontains\x18\x07 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00\x12\x33\n\x06\x63ustom\x18\x08 \x01(\x0b\x32!.xds.core.v3.TypedExtensionConfigH\x00\x12\x13\n\x0bignore_case\x18\x06 \x01(\x08\x42\x14\n\rmatch_pattern\x12\x03\xf8\x42\x01\"S\n\x11ListStringMatcher\x12>\n\x08patterns\x18\x01 \x03(\x0b\x32\".xds.type.matcher.v3.StringMatcherB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x42[\n\x1e\x63om.github.xds.type.matcher.v3B\x0bStringProtoP\x01Z*github.com/cncf/xds/go/xds/type/matcher/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.type.matcher.v3.string_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\036com.github.xds.type.matcher.v3B\013StringProtoP\001Z*github.com/cncf/xds/go/xds/type/matcher/v3' + _globals['_STRINGMATCHER'].oneofs_by_name['match_pattern']._loaded_options = None + _globals['_STRINGMATCHER'].oneofs_by_name['match_pattern']._serialized_options = b'\370B\001' + _globals['_STRINGMATCHER'].fields_by_name['prefix']._loaded_options = None + _globals['_STRINGMATCHER'].fields_by_name['prefix']._serialized_options = b'\372B\004r\002\020\001' + _globals['_STRINGMATCHER'].fields_by_name['suffix']._loaded_options = None + _globals['_STRINGMATCHER'].fields_by_name['suffix']._serialized_options = b'\372B\004r\002\020\001' + _globals['_STRINGMATCHER'].fields_by_name['safe_regex']._loaded_options = None + _globals['_STRINGMATCHER'].fields_by_name['safe_regex']._serialized_options = b'\372B\005\212\001\002\020\001' + _globals['_STRINGMATCHER'].fields_by_name['contains']._loaded_options = None + _globals['_STRINGMATCHER'].fields_by_name['contains']._serialized_options = b'\372B\004r\002\020\001' + _globals['_LISTSTRINGMATCHER'].fields_by_name['patterns']._loaded_options = None + _globals['_LISTSTRINGMATCHER'].fields_by_name['patterns']._serialized_options = b'\372B\005\222\001\002\010\001' + _globals['_STRINGMATCHER']._serialized_start=145 + _globals['_STRINGMATCHER']._serialized_end=423 + _globals['_LISTSTRINGMATCHER']._serialized_start=425 + _globals['_LISTSTRINGMATCHER']._serialized_end=508 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/type/v3/__init__.py b/python/xds/type/v3/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/xds/type/v3/cel_pb2.py b/python/xds/type/v3/cel_pb2.py new file mode 100644 index 00000000..cb1df3af --- /dev/null +++ b/python/xds/type/v3/cel_pb2.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/type/v3/cel.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/type/v3/cel.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.api.expr.v1alpha1 import checked_pb2 as google_dot_api_dot_expr_dot_v1alpha1_dot_checked__pb2 +from google.api.expr.v1alpha1 import syntax_pb2 as google_dot_api_dot_expr_dot_v1alpha1_dot_syntax__pb2 +from cel.expr import checked_pb2 as cel_dot_expr_dot_checked__pb2 +from cel.expr import syntax_pb2 as cel_dot_expr_dot_syntax__pb2 +from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 +from xds.annotations.v3 import status_pb2 as xds_dot_annotations_dot_v3_dot_status__pb2 +from validate import validate_pb2 as validate_dot_validate__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15xds/type/v3/cel.proto\x12\x0bxds.type.v3\x1a&google/api/expr/v1alpha1/checked.proto\x1a%google/api/expr/v1alpha1/syntax.proto\x1a\x16\x63\x65l/expr/checked.proto\x1a\x15\x63\x65l/expr/syntax.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1fxds/annotations/v3/status.proto\x1a\x17validate/validate.proto\"\x85\x02\n\rCelExpression\x12?\n\x0bparsed_expr\x18\x01 \x01(\x0b\x32$.google.api.expr.v1alpha1.ParsedExprB\x02\x18\x01H\x00\x12\x41\n\x0c\x63hecked_expr\x18\x02 \x01(\x0b\x32%.google.api.expr.v1alpha1.CheckedExprB\x02\x18\x01H\x00\x12-\n\x0f\x63\x65l_expr_parsed\x18\x03 \x01(\x0b\x32\x14.cel.expr.ParsedExpr\x12/\n\x10\x63\x65l_expr_checked\x18\x04 \x01(\x0b\x32\x15.cel.expr.CheckedExprB\x10\n\x0e\x65xpr_specifier\"\x83\x01\n\x10\x43\x65lExtractString\x12:\n\x0c\x65xpr_extract\x18\x01 \x01(\x0b\x32\x1a.xds.type.v3.CelExpressionB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x33\n\rdefault_value\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValueBP\n\x16\x63om.github.xds.type.v3B\x08\x43\x65lProtoP\x01Z\"github.com/cncf/xds/go/xds/type/v3\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.type.v3.cel_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\026com.github.xds.type.v3B\010CelProtoP\001Z\"github.com/cncf/xds/go/xds/type/v3\322\306\244\341\006\002\010\001' + _globals['_CELEXPRESSION'].fields_by_name['parsed_expr']._loaded_options = None + _globals['_CELEXPRESSION'].fields_by_name['parsed_expr']._serialized_options = b'\030\001' + _globals['_CELEXPRESSION'].fields_by_name['checked_expr']._loaded_options = None + _globals['_CELEXPRESSION'].fields_by_name['checked_expr']._serialized_options = b'\030\001' + _globals['_CELEXTRACTSTRING'].fields_by_name['expr_extract']._loaded_options = None + _globals['_CELEXTRACTSTRING'].fields_by_name['expr_extract']._serialized_options = b'\372B\005\212\001\002\020\001' + _globals['_CELEXPRESSION']._serialized_start=255 + _globals['_CELEXPRESSION']._serialized_end=516 + _globals['_CELEXTRACTSTRING']._serialized_start=519 + _globals['_CELEXTRACTSTRING']._serialized_end=650 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/type/v3/range_pb2.py b/python/xds/type/v3/range_pb2.py new file mode 100644 index 00000000..a12a6223 --- /dev/null +++ b/python/xds/type/v3/range_pb2.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/type/v3/range.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/type/v3/range.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17xds/type/v3/range.proto\x12\x0bxds.type.v3\"(\n\nInt64Range\x12\r\n\x05start\x18\x01 \x01(\x03\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x03\"(\n\nInt32Range\x12\r\n\x05start\x18\x01 \x01(\x05\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x05\")\n\x0b\x44oubleRange\x12\r\n\x05start\x18\x01 \x01(\x01\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x01\x42J\n\x16\x63om.github.xds.type.v3B\nRangeProtoP\x01Z\"github.com/cncf/xds/go/xds/type/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.type.v3.range_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\026com.github.xds.type.v3B\nRangeProtoP\001Z\"github.com/cncf/xds/go/xds/type/v3' + _globals['_INT64RANGE']._serialized_start=40 + _globals['_INT64RANGE']._serialized_end=80 + _globals['_INT32RANGE']._serialized_start=82 + _globals['_INT32RANGE']._serialized_end=122 + _globals['_DOUBLERANGE']._serialized_start=124 + _globals['_DOUBLERANGE']._serialized_end=165 +# @@protoc_insertion_point(module_scope) diff --git a/python/xds/type/v3/typed_struct_pb2.py b/python/xds/type/v3/typed_struct_pb2.py new file mode 100644 index 00000000..2b145c0a --- /dev/null +++ b/python/xds/type/v3/typed_struct_pb2.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: xds/type/v3/typed_struct.proto +# Protobuf Python Version: 5.29.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 1, + '', + 'xds/type/v3/typed_struct.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1exds/type/v3/typed_struct.proto\x12\x0bxds.type.v3\x1a\x1cgoogle/protobuf/struct.proto\"G\n\x0bTypedStruct\x12\x10\n\x08type_url\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructBP\n\x16\x63om.github.xds.type.v3B\x10TypedStructProtoP\x01Z\"github.com/cncf/xds/go/xds/type/v3b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'xds.type.v3.typed_struct_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\026com.github.xds.type.v3B\020TypedStructProtoP\001Z\"github.com/cncf/xds/go/xds/type/v3' + _globals['_TYPEDSTRUCT']._serialized_start=77 + _globals['_TYPEDSTRUCT']._serialized_end=148 +# @@protoc_insertion_point(module_scope) diff --git a/tools/generate_go_protobuf.py b/tools/generate_go_protobuf.py deleted file mode 100755 index c9582c58..00000000 --- a/tools/generate_go_protobuf.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env python3 - -from subprocess import check_output -import glob -import os -import shutil - -def generateProtobufs(output): - bazel_bin = check_output(['bazel', 'info', 'bazel-bin']).decode().strip() - - go_protos = check_output([ - 'bazel', - 'query', - 'kind("go_proto_library", ...)', - ]).split() - - check_output(['bazel', 'build', '-c', 'fastbuild'] + go_protos) - - for rule in go_protos: - rule_dir = rule.decode()[2:].rsplit(':')[0] - input_dir = os.path.join(bazel_bin, rule_dir, 'pkg_go_proto_', - 'github.com/cncf/xds/go', rule_dir) - input_files = glob.glob(os.path.join(input_dir, '*.go')) - output_dir = os.path.join(output, rule_dir) - - # Ensure the output directory exists - os.makedirs(output_dir, 0o755, exist_ok=True) - for generated_file in input_files: - output_file = shutil.copy(generated_file, output_dir) - os.chmod(output_file, 0o644) - - -if __name__ == "__main__": - workspace = check_output(['bazel', 'info', 'workspace']).decode().strip() - output = os.path.join(workspace, 'go') - generateProtobufs(output) diff --git a/tools/generate_protobuf.py b/tools/generate_protobuf.py new file mode 100755 index 00000000..d12704a9 --- /dev/null +++ b/tools/generate_protobuf.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 + +from subprocess import check_output +import glob +import os +import shutil + +def generate_go_protobufs(output,language): + bazel_bin = check_output(['bazel', 'info', 'bazel-bin']).decode().strip() + + if language == "go": + protos = check_output([ + 'bazel', + 'query', + 'kind("go_proto_library", ...)', + ]).split() + output_dir = 'github.com/cncf/xds/python' + if language == "python": + protos = check_output([ + 'bazel', + 'query', + 'kind("py_proto_library", ...)', + ]).split() + output_dir = 'github.com/cncf/xds/go' + check_output(['bazel', 'build', '-c', 'fastbuild'] + protos) + + for rule in protos: + rule_dir = rule.decode()[2:].rsplit(':')[0] + if language == "go": + input_dir = os.path.join(bazel_bin, rule_dir, 'pkg_go_proto_', + 'github.com/cncf/xds/go', rule_dir) + input_files = glob.glob(os.path.join(input_dir, '*.go')) + elif language == "python": + input_dir = os.path.join(bazel_bin, rule_dir) + input_files = glob.glob(os.path.join(input_dir, '*_pb2.py')) + + output_dir = os.path.join(output, rule_dir) + + # Ensure the output directory exists + os.makedirs(output_dir, 0o755, exist_ok=True) + for generated_file in input_files: + output_file = shutil.copy(generated_file, output_dir) + os.chmod(output_file, 0o644) + + +if __name__ == "__main__": + workspace = check_output(['bazel', 'info', 'workspace']).decode().strip() + output = os.path.join(workspace, 'go') + generate_go_protobufs(output, "go") + output = os.path.join(workspace, 'python') + generate_go_protobufs(output, "python") \ No newline at end of file From a4db799affd77be59c656bc24c6948d2dc857855 Mon Sep 17 00:00:00 2001 From: Kunjan Patel Date: Wed, 8 Jan 2025 01:59:29 +0000 Subject: [PATCH 2/7] Consolidate, setup.py with pyproject.toml and remove redundant license. Add disrtribution wheel Signed-off-by: Kunjan Patel --- python/LICENSE | 21 ------- python/dist/xds-0.1.0-py3-none-any.whl | Bin 0 -> 45988 bytes python/dist/xds-0.1.0.tar.gz | Bin 0 -> 16921 bytes python/pyproject.toml | 25 +++++---- python/setup.py | 12 ---- python/xds.egg-info/PKG-INFO | 8 +++ python/xds.egg-info/SOURCES.txt | 68 +++++++++++++++++++++++ python/xds.egg-info/dependency_links.txt | 1 + python/xds.egg-info/requires.txt | 2 + python/xds.egg-info/top_level.txt | 4 ++ 10 files changed, 96 insertions(+), 45 deletions(-) delete mode 100644 python/LICENSE create mode 100644 python/dist/xds-0.1.0-py3-none-any.whl create mode 100644 python/dist/xds-0.1.0.tar.gz delete mode 100644 python/setup.py create mode 100644 python/xds.egg-info/PKG-INFO create mode 100644 python/xds.egg-info/SOURCES.txt create mode 100644 python/xds.egg-info/dependency_links.txt create mode 100644 python/xds.egg-info/requires.txt create mode 100644 python/xds.egg-info/top_level.txt diff --git a/python/LICENSE b/python/LICENSE deleted file mode 100644 index c9864297..00000000 --- a/python/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2024 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/python/dist/xds-0.1.0-py3-none-any.whl b/python/dist/xds-0.1.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..604b11bbfa86a44c31a354049690a7ef4a212aba GIT binary patch literal 45988 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 P0{m?QUbWyv#DD(>dk5RF literal 0 HcmV?d00001 diff --git a/python/dist/xds-0.1.0.tar.gz b/python/dist/xds-0.1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..608d815a8ab4f7a2ea790196d4905025584498c2 GIT binary patch literal 16921 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 W9`OJB;g=3.2,<4"] -build-backend = "flit_core.buildapi" +requires = [ + "setuptools>=42", + "wheel" +] +build-backend = "setuptools.build_meta" [project] name = "xds" -authors = [] version = "0.1.0" -description = "generated python libraries for xds protos" -license = { file = "LICENSE" } -classifiers = ["License :: OSI Approved :: MIT License"] -dependencies = ["protobuf >=5.29.1", "protoc-gen-validate"] +description = "xds Protocol Buffer Messages" +requires-python = ">=3.7" # Or the appropriate minimum Python version +dependencies = [ + "protobuf==5.29.1" +] -[project.urls] -Home = "https://github.com/cncf/xds" +[project.optional-dependencies] -[tool.flit.metadata] -module = "xds" -requires-python = ">=3.7" +[tool.setuptools.packages.find] +where = ["."] \ No newline at end of file diff --git a/python/setup.py b/python/setup.py deleted file mode 100644 index 64fc0a37..00000000 --- a/python/setup.py +++ /dev/null @@ -1,12 +0,0 @@ -from setuptools import setup, find_packages - -setup( - name='xds', - version='0.1.0', - description='xds Protocol Buffer Messages', - packages=find_packages(), - install_requires=[ - 'protobuf==5.29.1', - 'protoc-gen-validate', - ], -) \ No newline at end of file diff --git a/python/xds.egg-info/PKG-INFO b/python/xds.egg-info/PKG-INFO new file mode 100644 index 00000000..3d3e038e --- /dev/null +++ b/python/xds.egg-info/PKG-INFO @@ -0,0 +1,8 @@ +Metadata-Version: 2.1 +Name: xds +Version: 0.1.0 +Summary: xds Protocol Buffer Messages +Requires-Python: >=3.7 +License-File: LICENSE +Requires-Dist: protobuf==5.29.1 +Requires-Dist: protoc-gen-validate diff --git a/python/xds.egg-info/SOURCES.txt b/python/xds.egg-info/SOURCES.txt new file mode 100644 index 00000000..bb1aacdf --- /dev/null +++ b/python/xds.egg-info/SOURCES.txt @@ -0,0 +1,68 @@ +LICENSE +pyproject.toml +setup.py +udpa/__init__.py +udpa/annotations/__init__.py +udpa/annotations/migrate_pb2.py +udpa/annotations/security_pb2.py +udpa/annotations/sensitive_pb2.py +udpa/annotations/status_pb2.py +udpa/annotations/versioning_pb2.py +udpa/data/__init__.py +udpa/data/orca/__init__.py +udpa/data/orca/v1/__init__.py +udpa/data/orca/v1/orca_load_report_pb2.py +udpa/service/__init__.py +udpa/service/orca/__init__.py +udpa/service/orca/v1/__init__.py +udpa/service/orca/v1/orca_pb2.py +udpa/type/__init__.py +udpa/type/v1/__init__.py +udpa/type/v1/typed_struct_pb2.py +validate/validate_pb2.py +xds/__init__.py +xds.egg-info/PKG-INFO +xds.egg-info/SOURCES.txt +xds.egg-info/dependency_links.txt +xds.egg-info/requires.txt +xds.egg-info/top_level.txt +xds/annotations/__init__.py +xds/annotations/v3/__init__.py +xds/annotations/v3/migrate_pb2.py +xds/annotations/v3/security_pb2.py +xds/annotations/v3/sensitive_pb2.py +xds/annotations/v3/status_pb2.py +xds/annotations/v3/versioning_pb2.py +xds/core/__init__.py +xds/core/v3/__init__.py +xds/core/v3/authority_pb2.py +xds/core/v3/cidr_pb2.py +xds/core/v3/collection_entry_pb2.py +xds/core/v3/context_params_pb2.py +xds/core/v3/extension_pb2.py +xds/core/v3/resource_locator_pb2.py +xds/core/v3/resource_name_pb2.py +xds/core/v3/resource_pb2.py +xds/data/__init__.py +xds/data/orca/__init__.py +xds/data/orca/v3/__init__.py +xds/data/orca/v3/orca_load_report_pb2.py +xds/service/__init__.py +xds/service/orca/__init__.py +xds/service/orca/v3/__init__.py +xds/service/orca/v3/orca_pb2.py +xds/type/__init__.py +xds/type/matcher/__init__.py +xds/type/matcher/v3/__init__.py +xds/type/matcher/v3/cel_pb2.py +xds/type/matcher/v3/domain_pb2.py +xds/type/matcher/v3/http_inputs_pb2.py +xds/type/matcher/v3/ip_pb2.py +xds/type/matcher/v3/matcher_pb2.py +xds/type/matcher/v3/range_pb2.py +xds/type/matcher/v3/regex_pb2.py +xds/type/matcher/v3/string_pb2.py +xds/type/v3/__init__.py +xds/type/v3/cel_pb2.py +xds/type/v3/range_pb2.py +xds/type/v3/typed_struct_pb2.py \ No newline at end of file diff --git a/python/xds.egg-info/dependency_links.txt b/python/xds.egg-info/dependency_links.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/python/xds.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/python/xds.egg-info/requires.txt b/python/xds.egg-info/requires.txt new file mode 100644 index 00000000..4661e61c --- /dev/null +++ b/python/xds.egg-info/requires.txt @@ -0,0 +1,2 @@ +protobuf==5.29.1 +protoc-gen-validate diff --git a/python/xds.egg-info/top_level.txt b/python/xds.egg-info/top_level.txt new file mode 100644 index 00000000..9b0acb17 --- /dev/null +++ b/python/xds.egg-info/top_level.txt @@ -0,0 +1,4 @@ +dist +udpa +validate +xds From e2c79e16e05396dbd3f2fff4249577afa578910a Mon Sep 17 00:00:00 2001 From: Kunjan Patel Date: Wed, 8 Jan 2025 02:24:35 +0000 Subject: [PATCH 3/7] Consolidate, setup.py with pyproject.toml and remove redundant license. Add disrtribution wheel Signed-off-by: Kunjan Patel --- tools/generate_protobuf.py | 93 +++++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 41 deletions(-) diff --git a/tools/generate_protobuf.py b/tools/generate_protobuf.py index d12704a9..44ff779f 100755 --- a/tools/generate_protobuf.py +++ b/tools/generate_protobuf.py @@ -5,47 +5,58 @@ import os import shutil -def generate_go_protobufs(output,language): - bazel_bin = check_output(['bazel', 'info', 'bazel-bin']).decode().strip() - - if language == "go": - protos = check_output([ - 'bazel', - 'query', - 'kind("go_proto_library", ...)', - ]).split() - output_dir = 'github.com/cncf/xds/python' - if language == "python": - protos = check_output([ - 'bazel', - 'query', - 'kind("py_proto_library", ...)', - ]).split() - output_dir = 'github.com/cncf/xds/go' - check_output(['bazel', 'build', '-c', 'fastbuild'] + protos) - - for rule in protos: - rule_dir = rule.decode()[2:].rsplit(':')[0] - if language == "go": - input_dir = os.path.join(bazel_bin, rule_dir, 'pkg_go_proto_', - 'github.com/cncf/xds/go', rule_dir) - input_files = glob.glob(os.path.join(input_dir, '*.go')) - elif language == "python": - input_dir = os.path.join(bazel_bin, rule_dir) - input_files = glob.glob(os.path.join(input_dir, '*_pb2.py')) - - output_dir = os.path.join(output, rule_dir) - - # Ensure the output directory exists - os.makedirs(output_dir, 0o755, exist_ok=True) - for generated_file in input_files: - output_file = shutil.copy(generated_file, output_dir) - os.chmod(output_file, 0o644) +workspace = check_output(["bazel", "info", "workspace"]).decode().strip() +SUPPORTED_LANGUAGES = ["go", "python"] + + +def generate_lang_files_from_protos(language: str): + output = os.path.join(workspace, language) + bazel_bin = check_output(["bazel", "info", "bazel-bin"]).decode().strip() + + protos = ( + check_output( + [ + "bazel", + "query", + f'kind("{language}_proto_library", ...)', + ] + ) + .decode() + .split() + ) + output_dir = f"github.com/cncf/xds/{language}" + check_output(["bazel", "build", "-c", "fastbuild"] + protos) + + for rule in protos: + rule_dir = rule.decode()[2:].rsplit(":")[0] + input_dir = { + "go": os.path.join( + bazel_bin, rule_dir, "pkg_go_proto_", "github.com/cncf/xds/go", rule_dir + ), + "python": os.path.join(bazel_bin, rule_dir), + }[language] + input_files = { + "go": glob.glob(os.path.join(input_dir, "*.go")), + "python": glob.glob(os.path.join(input_dir, "*_pb2.py")), + }[language] + if language == "go": + input_dir = os.path.join( + bazel_bin, rule_dir, "pkg_go_proto_", "github.com/cncf/xds/go", rule_dir + ) + input_files = glob.glob(os.path.join(input_dir, "*.go")) + elif language == "python": + input_dir = os.path.join(bazel_bin, rule_dir) + input_files = glob.glob(os.path.join(input_dir, "*_pb2.py")) + + output_dir = os.path.join(output, rule_dir) + + # Ensure the output directory exists + os.makedirs(output_dir, 0o755, exist_ok=True) + for generated_file in input_files: + output_file = shutil.copy(generated_file, output_dir) + os.chmod(output_file, 0o644) if __name__ == "__main__": - workspace = check_output(['bazel', 'info', 'workspace']).decode().strip() - output = os.path.join(workspace, 'go') - generate_go_protobufs(output, "go") - output = os.path.join(workspace, 'python') - generate_go_protobufs(output, "python") \ No newline at end of file + for language in SUPPORTED_LANGUAGES: + generate_lang_files_from_protos(language=language) From 01c74414265c350d2f91e2c3fc4af2873321a81b Mon Sep 17 00:00:00 2001 From: Kunjan Patel Date: Wed, 8 Jan 2025 02:45:46 +0000 Subject: [PATCH 4/7] Refactor generate_protobuf Signed-off-by: Kunjan Patel --- tools/generate_protobuf.py | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/tools/generate_protobuf.py b/tools/generate_protobuf.py index 44ff779f..a162b208 100755 --- a/tools/generate_protobuf.py +++ b/tools/generate_protobuf.py @@ -13,22 +13,20 @@ def generate_lang_files_from_protos(language: str): output = os.path.join(workspace, language) bazel_bin = check_output(["bazel", "info", "bazel-bin"]).decode().strip() - protos = ( - check_output( + protos = check_output( [ "bazel", "query", - f'kind("{language}_proto_library", ...)', + {"go":'kind("go_proto_library", ...)', + "python":'kind("py_proto_library", ...)'}[language] ] - ) - .decode() - .split() - ) + ).split() output_dir = f"github.com/cncf/xds/{language}" check_output(["bazel", "build", "-c", "fastbuild"] + protos) - + print(protos) for rule in protos: rule_dir = rule.decode()[2:].rsplit(":")[0] + print("rule ", rule, rule_dir) input_dir = { "go": os.path.join( bazel_bin, rule_dir, "pkg_go_proto_", "github.com/cncf/xds/go", rule_dir @@ -39,15 +37,7 @@ def generate_lang_files_from_protos(language: str): "go": glob.glob(os.path.join(input_dir, "*.go")), "python": glob.glob(os.path.join(input_dir, "*_pb2.py")), }[language] - if language == "go": - input_dir = os.path.join( - bazel_bin, rule_dir, "pkg_go_proto_", "github.com/cncf/xds/go", rule_dir - ) - input_files = glob.glob(os.path.join(input_dir, "*.go")) - elif language == "python": - input_dir = os.path.join(bazel_bin, rule_dir) - input_files = glob.glob(os.path.join(input_dir, "*_pb2.py")) - + output_dir = os.path.join(output, rule_dir) # Ensure the output directory exists From 382e8f071eba194ad4c72a452c0c6c66b4e62bcb Mon Sep 17 00:00:00 2001 From: Kunjan Patel Date: Wed, 8 Jan 2025 02:46:24 +0000 Subject: [PATCH 5/7] Refactor generate_protobuf Signed-off-by: Kunjan Patel --- ci/azure-pipelines.yml | 2 +- ci/check.sh | 2 +- ...{generate_protobuf.py => generate_lang_files_from_protos.py} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename tools/{generate_protobuf.py => generate_lang_files_from_protos.py} (100%) diff --git a/ci/azure-pipelines.yml b/ci/azure-pipelines.yml index eea5e4db..7fc42a34 100644 --- a/ci/azure-pipelines.yml +++ b/ci/azure-pipelines.yml @@ -21,7 +21,7 @@ jobs: env: TEST_TMPDIR: $(Agent.TempDirectory)/tmp - - bash: tools/generate_protobuf.py && test -z "$(git status --porcelain)" + - bash: tools/generate_lang_files_from_protos.py && test -z "$(git status --porcelain)" env: TEST_TMPDIR: $(Agent.TempDirectory)/tmp diff --git a/ci/check.sh b/ci/check.sh index 5f0302f9..0abcf6cd 100755 --- a/ci/check.sh +++ b/ci/check.sh @@ -6,7 +6,7 @@ bazel test --config=ci //... rm -rf go/xds go/udpa -tools/generate_protobuf.py +tools/generate_lang_files_from_protos.py git add go/xds go/udpa diff --git a/tools/generate_protobuf.py b/tools/generate_lang_files_from_protos.py similarity index 100% rename from tools/generate_protobuf.py rename to tools/generate_lang_files_from_protos.py From 8d1e7acce452aa55e6cbe67a60dc6576019a01a4 Mon Sep 17 00:00:00 2001 From: Kunjan Patel Date: Wed, 15 Jan 2025 18:50:42 +0000 Subject: [PATCH 6/7] Create class to hold language specific logic Signed-off-by: Kunjan Patel --- tools/generate_lang_files_from_protos.py | 43 ++++++------- tools/language_config.py | 78 ++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 26 deletions(-) create mode 100644 tools/language_config.py diff --git a/tools/generate_lang_files_from_protos.py b/tools/generate_lang_files_from_protos.py index a162b208..7e5d29fa 100755 --- a/tools/generate_lang_files_from_protos.py +++ b/tools/generate_lang_files_from_protos.py @@ -4,42 +4,33 @@ import glob import os import shutil +from language_config import GoConfig, PythonConfig, LanguageConfig workspace = check_output(["bazel", "info", "workspace"]).decode().strip() -SUPPORTED_LANGUAGES = ["go", "python"] +LANG_CONFIGS = {config.language: config for config in [GoConfig(), PythonConfig()]} - -def generate_lang_files_from_protos(language: str): +def generate_lang_files_from_protos(language_config: LanguageConfig): + language = language_config.language + print(f"Generating proto code in language {language}") output = os.path.join(workspace, language) bazel_bin = check_output(["bazel", "info", "bazel-bin"]).decode().strip() protos = check_output( - [ - "bazel", - "query", - {"go":'kind("go_proto_library", ...)', - "python":'kind("py_proto_library", ...)'}[language] - ] - ).split() + [ + "bazel", + "query", + language_config.bazel_query_kind, + ] + ).split() output_dir = f"github.com/cncf/xds/{language}" check_output(["bazel", "build", "-c", "fastbuild"] + protos) - print(protos) + print(f"Found {len(protos)} bazel rules to generate code") for rule in protos: rule_dir = rule.decode()[2:].rsplit(":")[0] - print("rule ", rule, rule_dir) - input_dir = { - "go": os.path.join( - bazel_bin, rule_dir, "pkg_go_proto_", "github.com/cncf/xds/go", rule_dir - ), - "python": os.path.join(bazel_bin, rule_dir), - }[language] - input_files = { - "go": glob.glob(os.path.join(input_dir, "*.go")), - "python": glob.glob(os.path.join(input_dir, "*_pb2.py")), - }[language] - + input_dir = language_config.get_input_dir(bazel_bin, rule_dir) + input_files = glob.glob(os.path.join(input_dir, language_config.generated_file_pattern)) output_dir = os.path.join(output, rule_dir) - + print(f"Moving {len(input_files)} generated files from {input_dir} to output_dir {output_dir}") # Ensure the output directory exists os.makedirs(output_dir, 0o755, exist_ok=True) for generated_file in input_files: @@ -48,5 +39,5 @@ def generate_lang_files_from_protos(language: str): if __name__ == "__main__": - for language in SUPPORTED_LANGUAGES: - generate_lang_files_from_protos(language=language) + for config in LANG_CONFIGS.values(): + generate_lang_files_from_protos(language_config=config) \ No newline at end of file diff --git a/tools/language_config.py b/tools/language_config.py new file mode 100644 index 00000000..ee3d6235 --- /dev/null +++ b/tools/language_config.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 + +from subprocess import check_output + +import os + +from abc import ABC, abstractmethod + +workspace = check_output(["bazel", "info", "workspace"]).decode().strip() + + +class LanguageConfig(ABC): + """Abstract base class for language-specific configurations.""" + + @property + @abstractmethod + def language(self) -> str: + """Returns the language name.""" + pass + + @property + @abstractmethod + def bazel_query_kind(self) -> str: + """Returns the Bazel query kind for this language.""" + pass + + @property + @abstractmethod + def generated_file_pattern(self) -> str: + """Returns the file pattern for generated files.""" + pass + + @abstractmethod + def get_input_dir(self, bazel_bin: str, rule_dir: str) -> str: + """Constructs the input directory path for generated files.""" + pass + + +class GoConfig(LanguageConfig): + """Configuration for Go.""" + + @property + def language(self) -> str: + return "go" + + @property + def bazel_query_kind(self) -> str: + return 'kind("go_proto_library", ...)' + + @property + def generated_file_pattern(self) -> str: + return "*.go" + + def get_input_dir(self, bazel_bin: str, rule_dir: str) -> str: + return os.path.join( + bazel_bin, rule_dir, "pkg_go_proto_", "github.com/cncf/xds/go", rule_dir + ) + + +class PythonConfig(LanguageConfig): + """Configuration for Python.""" + + @property + def language(self) -> str: + return "python" + + @property + def bazel_query_kind(self) -> str: + return 'kind("py_proto_library", ...)' + + @property + def generated_file_pattern(self) -> str: + return "*_pb2.py" + + def get_input_dir(self, bazel_bin: str, rule_dir: str) -> str: + return os.path.join(bazel_bin, rule_dir) + + From f324a7fd02ed57b34ed8b2823f7ff61b5c11b864 Mon Sep 17 00:00:00 2001 From: Kunjan Patel Date: Wed, 15 Jan 2025 23:47:07 +0000 Subject: [PATCH 7/7] Delete the python package Signed-off-by: Kunjan Patel --- python/xds.egg-info/PKG-INFO | 8 --- python/xds.egg-info/SOURCES.txt | 68 ------------------------ python/xds.egg-info/dependency_links.txt | 1 - python/xds.egg-info/requires.txt | 2 - python/xds.egg-info/top_level.txt | 4 -- 5 files changed, 83 deletions(-) delete mode 100644 python/xds.egg-info/PKG-INFO delete mode 100644 python/xds.egg-info/SOURCES.txt delete mode 100644 python/xds.egg-info/dependency_links.txt delete mode 100644 python/xds.egg-info/requires.txt delete mode 100644 python/xds.egg-info/top_level.txt diff --git a/python/xds.egg-info/PKG-INFO b/python/xds.egg-info/PKG-INFO deleted file mode 100644 index 3d3e038e..00000000 --- a/python/xds.egg-info/PKG-INFO +++ /dev/null @@ -1,8 +0,0 @@ -Metadata-Version: 2.1 -Name: xds -Version: 0.1.0 -Summary: xds Protocol Buffer Messages -Requires-Python: >=3.7 -License-File: LICENSE -Requires-Dist: protobuf==5.29.1 -Requires-Dist: protoc-gen-validate diff --git a/python/xds.egg-info/SOURCES.txt b/python/xds.egg-info/SOURCES.txt deleted file mode 100644 index bb1aacdf..00000000 --- a/python/xds.egg-info/SOURCES.txt +++ /dev/null @@ -1,68 +0,0 @@ -LICENSE -pyproject.toml -setup.py -udpa/__init__.py -udpa/annotations/__init__.py -udpa/annotations/migrate_pb2.py -udpa/annotations/security_pb2.py -udpa/annotations/sensitive_pb2.py -udpa/annotations/status_pb2.py -udpa/annotations/versioning_pb2.py -udpa/data/__init__.py -udpa/data/orca/__init__.py -udpa/data/orca/v1/__init__.py -udpa/data/orca/v1/orca_load_report_pb2.py -udpa/service/__init__.py -udpa/service/orca/__init__.py -udpa/service/orca/v1/__init__.py -udpa/service/orca/v1/orca_pb2.py -udpa/type/__init__.py -udpa/type/v1/__init__.py -udpa/type/v1/typed_struct_pb2.py -validate/validate_pb2.py -xds/__init__.py -xds.egg-info/PKG-INFO -xds.egg-info/SOURCES.txt -xds.egg-info/dependency_links.txt -xds.egg-info/requires.txt -xds.egg-info/top_level.txt -xds/annotations/__init__.py -xds/annotations/v3/__init__.py -xds/annotations/v3/migrate_pb2.py -xds/annotations/v3/security_pb2.py -xds/annotations/v3/sensitive_pb2.py -xds/annotations/v3/status_pb2.py -xds/annotations/v3/versioning_pb2.py -xds/core/__init__.py -xds/core/v3/__init__.py -xds/core/v3/authority_pb2.py -xds/core/v3/cidr_pb2.py -xds/core/v3/collection_entry_pb2.py -xds/core/v3/context_params_pb2.py -xds/core/v3/extension_pb2.py -xds/core/v3/resource_locator_pb2.py -xds/core/v3/resource_name_pb2.py -xds/core/v3/resource_pb2.py -xds/data/__init__.py -xds/data/orca/__init__.py -xds/data/orca/v3/__init__.py -xds/data/orca/v3/orca_load_report_pb2.py -xds/service/__init__.py -xds/service/orca/__init__.py -xds/service/orca/v3/__init__.py -xds/service/orca/v3/orca_pb2.py -xds/type/__init__.py -xds/type/matcher/__init__.py -xds/type/matcher/v3/__init__.py -xds/type/matcher/v3/cel_pb2.py -xds/type/matcher/v3/domain_pb2.py -xds/type/matcher/v3/http_inputs_pb2.py -xds/type/matcher/v3/ip_pb2.py -xds/type/matcher/v3/matcher_pb2.py -xds/type/matcher/v3/range_pb2.py -xds/type/matcher/v3/regex_pb2.py -xds/type/matcher/v3/string_pb2.py -xds/type/v3/__init__.py -xds/type/v3/cel_pb2.py -xds/type/v3/range_pb2.py -xds/type/v3/typed_struct_pb2.py \ No newline at end of file diff --git a/python/xds.egg-info/dependency_links.txt b/python/xds.egg-info/dependency_links.txt deleted file mode 100644 index 8b137891..00000000 --- a/python/xds.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/python/xds.egg-info/requires.txt b/python/xds.egg-info/requires.txt deleted file mode 100644 index 4661e61c..00000000 --- a/python/xds.egg-info/requires.txt +++ /dev/null @@ -1,2 +0,0 @@ -protobuf==5.29.1 -protoc-gen-validate diff --git a/python/xds.egg-info/top_level.txt b/python/xds.egg-info/top_level.txt deleted file mode 100644 index 9b0acb17..00000000 --- a/python/xds.egg-info/top_level.txt +++ /dev/null @@ -1,4 +0,0 @@ -dist -udpa -validate -xds